Kaedah keluaran untuk mentakrifkan fungsi jenis berdasarkan syarat dalam TypeScript
P粉764836448
P粉764836448 2023-08-14 18:18:08
0
1
475

Saya cuba mentakrifkan jenis output untuk fungsi saya dan saya mahu menggunakan bendera kepadaNumberIfNeeded /code> jenis Tetapkan syarat antara, dengan mengandaikan bahawa jika toNumberIfNeeded fungsi ini akan mengembalikan jenis angka, jika tidak, ia akan mengembalikan jenis rentetan. Apa patut saya buat?

Pilihan antara muka { huruf besar?: boolean; filterSpecialChars?: boolean; toNumberIfNeeded?: boolean; } eksport const textTransformer = (teks: rentetan, pilihan?: Pilihan) => const { huruf besar, filterSpecialChars, toNumberIfNeeded} = pilihan ||. //Kod logik pemprosesan saya kembali keNumberIfNeeded ? parseInt(text) : text; }

Contoh yang dijangkakan:

textTransformer('hello'); // Kembalikan jenis rentetan textTransformer('123', { toNumberIfNeeded: true }); // Kembalikan jenis angka
P粉764836448
P粉764836448

membalas semua (1)
P粉878542459

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

interface Options { uppercase: boolean; filterSpecialChars: boolean; toNumberIfNeeded: boolean; } export const textTransformer = ( 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
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!