Die Ausgabemethode zum Definieren von Typfunktionen basierend auf Bedingungen in TypeScript
P粉764836448
P粉764836448 2023-08-14 18:18:08
0
1
525
<p>Ich versuche, einen Ausgabetyp für meine Funktion zu definieren und möchte das Flag <code>toNumberIfNeeded</code> zwischen dem <code>string</code> verwenden. /code> setzt Bedingungen zwischen, vorausgesetzt, dass diese Funktion einen numerischen Typ zurückgibt, wenn <code>toNumberIfNeeded</code> Was soll ich machen? </p> <pre class="brush:php;toolbar:false;">Schnittstellenoptionen { Großbuchstaben?: boolean; filterSpecialChars?: boolean; toNumberIfNeeded?: boolean; } export const textTransformer = (text: string, options?: Options) => const { Uppercase, filterSpecialChars, toNumberIfNeeded} = Optionen || {}; //Mein Verarbeitungslogikcode return toNumberIfNeeded ? parseInt(text) : text; }</pre> <p>Erwartetes Beispiel:</p> <pre class="brush:php;toolbar:false;">textTransformer('hello'); // String-Typ zurückgeben textTransformer('123', { toNumberIfNeeded: true }); // Numerischen Typ zurückgeben</pre>
P粉764836448
P粉764836448

Antworte allen(1)
P粉878542459

你可以重构 textTransformer() 方法,接受一个泛型参数,并使用条件类型来检查 toNumberIfNeeded 是否为 truefalse。我认为 TypeScript 无法自动缩小返回值的类型。你必须使用类型断言,否则返回类型将被推断为 string | number

interface Options {
  uppercase: boolean;
  filterSpecialChars: boolean;
  toNumberIfNeeded: boolean;
}

export const textTransformer = <T extends Options>(
  text: string,
  options?: T
): T["toNumberIfNeeded"] extends true ? number : string => {
  const {uppercase, filterSpecialChars, toNumberIfNeeded} =
    options || {};
  // 我的处理逻辑代码

  return (toNumberIfNeeded ? parseInt(text) : text) as ReturnType<
    typeof textTransformer
  >;
};

textTransformer("hello"); // 推断为 string
textTransformer("123", {
  toNumberIfNeeded: true,
  uppercase: false,
  filterSpecialChars: false
}); // 推断为 number
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!