Typescript 对类型参数类的泛型约束

Tar*_* Em 5 type-constraints typescript

如何对 TypeScript 类型参数施加约束。在 c# 中,您可以使用构造{ where T:class}?

bas*_*rat 5

Typescript 是否支持类型参数的约束,例如 c# { where T:class}。

是的。语法的形式<T extends SomeClass>为而不是<T>

例子

interface Foo{
    foo: number;
}

function foo<T extends Foo>(foo:T){
    console.log(foo.foo);
}

foo({foo:123}); // okay
foo({foo:'123'}); // Error
Run Code Online (Sandbox Code Playgroud)

请注意,打字稿中的类型是结构化的(为什么),这意味着就通用约束而言,类和接口的处理方式相同。