我正在寻找与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/

10-11 19:16