gpt4 book ai didi

typescript - 当我为一个类型分配多个具有默认值的泛型时,如何保持泛型类型推断?

转载 作者:行者123 更新时间:2023-12-05 05:54:06 25 4
gpt4 key购买 nike

我定义了一个具有多个泛型的函数,并为它们提供了默认类型。例如:

function fun<A = any, B = any>(a: A, b: B) {
return [a, b] as const;
}

如果我不为它们分配任何类型,泛型将被正确推断。

let a: number;
let b: string;
const res = fun(a, b); // [number, string]

但是如果我为其中的一部分分配某种类型,其余的泛型将由它们的默认类型推断。

let a: number;
let b: string;
const res = fun<number>(a, b); // [number, any]

我如何分配一些泛型并保持其余泛型自行推断?

Playground link

最佳答案

我不认为这会出现太多,通常 a 将具有所需的类型,因此没有理由显式提供类型参数。但是在您希望结果与 a 不同的类型(可能是父类(super class)型)的情况下,想到的解决方案是使用 as 而不是类型争论。

这是一个例子:

type NumList = 42 | 67;

declare let a: NumList;
declare let b: string;
const res1 = fun(a, b); // [NumList, string]

const res2 = fun(a as number, b); // [number, string]
// ^^^^^^^^^^

Playground link

一般来说,我尽量避免类型断言,但无论如何提供类型参数都是有效的,至少如果类型断言非常无效,它就会失败,例如:

declare let a2: string;
const res3 = fun(a2 as number, b);
// ^^^^^^^^^^^^−−−−−−− error

Playground link

关于typescript - 当我为一个类型分配多个具有默认值的泛型时,如何保持泛型类型推断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69719232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com