gpt4 book ai didi

typescript 通用特化

转载 作者:行者123 更新时间:2023-12-02 04:24:19 25 4
gpt4 key购买 nike

我正在寻找类似于 Typescript 泛型特化的东西,其中实现可以根据类型标准不相交。

一个最小的例子:

const someFunction = <A>() => { return 0; }

// something like this
<A extends String>someFunction = (a: A) => { return 1; }
<A extends Number>someFunction = (a: A) => { return 2; }
.
.
.

console.log(someFunction(false)); // prints 0
console.log(someFunction('string')); // prints 1
console.log(someFunction(42)); // prints 2

这是我想要的“jist”。这在 typescript 中可能吗?

最佳答案

你所说的在 Typescript 中不存在。与此最接近的是 function overload .根据您的示例,它看起来像这样:

function someFunction(a: boolean): 0
function someFunction(a: string): 1
function someFunction(a: number): 2
function someFunction(a: any) {
if(typeof a === 'boolean') {
return 0
} else if (typeof a === 'string') {
return 1
} else if (typeof a === 'number') {
return 2
}
}

此示例适用于基元和 typeof但对复数值和其他 type guards 的作用相同包括用户定义的类型保护。

关于 typescript 通用特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56138822/

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