我正在寻找与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
这就是我想要的“吉斯特”。在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 - typescript 通用专长,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56138822/