在Typescript中,可以说“此变量的类型是特定的类而不是实例:”
const x: typeof Animal = Animal
泛型也可以说类型继承了另一种类型:
function myFunction<T extends Animal>(someAnimal: T) { /* ... */ }
我可以这两个并说“这个变量的类型是一个特定的类还是从该类继承的类”?
如果y
有这种类型,那么我可以y = Animal
或y = Tiger
。
答案 0 :(得分:3)
“此变量的类型是特定类或从该类继承的类
当你拥有x: typeof Animal
时,它已经接受了Animal或任何扩展Animal 的东西。这是因为TypeScript是结构化类型。
示例:
class Animal{
animal: number;
};
class Tiger extends Animal{
tiger: number;
};
let x: typeof Animal;
x = Animal;
x = Tiger;
为什么这是好主意有很多原因:https://basarat.gitbooks.io/typescript/content/docs/why-typescript.html
基于评论
等一下。所以这绝对有效,但是像myFunction(x:typeof Animal)和myFunction(Tiger)这样的东西不起作用 - 它会给出不兼容类型的错误。为什么不呢?
它也有效。
class Animal{
animal: number;
};
class Tiger extends Animal{
tiger: number;
};
function iTakeAnimalClasses(x: typeof Animal){}
iTakeAnimalClasses(Animal);
iTakeAnimalClasses(Tiger);