Typescript杂谈
Posted YAN-YAN
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Typescript杂谈相关的知识,希望对你有一定的参考价值。
在泛型约束中使用类型参数
可以声明一个类型参数,且它被另一个类型参数所约束。比如想要用属性名从对象中获取这个属性。且确保这个属性在对象上存在,需要在这两个类型之间使用约束。
function getProperty<T, K extends keyof T>(obj: T, key: K)
return obj[key];
let x =
a: 1,
b: 2,
c: 3,
d: 4,
;
console.log(getProperty(x, "a"));
console.log(getProperty(x, "m"));
// Argument of type \'"m"\' is not assignable to parameter of type \'"a" | "b" | "c" | "d"\'.
在泛型里使用类类型
function create<T>(c: new (): T ): T
return new c();
一个更高级的例子,使用原型属性推断并约束构造函数与类实例的关系
class BeeKeeper
hasMask: boolean;
class ZooKeeper
nameTag: string;
class Animal
nemLegs: number;
class Bee extends Animal
keeper: BeeKeeper;
class Lion extends Animal
keeper: ZooKeeper;
function createInstance<A extends Animal>(c: new () => A): A
return new c();
createInstance(Lion).keeper.nameTag // typechecks
createInstance(Bee).keeper.hasMask // typechecks
以上是关于Typescript杂谈的主要内容,如果未能解决你的问题,请参考以下文章
typescript Angular最终版本的Angular 2测试片段。代码库https://developers.livechatinc.com/blog/category/programming
typescript Angular最终版本的Angular 2测试片段。代码库https://developers.livechatinc.com/blog/category/programming
typescript Angular最终版本的Angular 2测试片段。代码库https://developers.livechatinc.com/blog/category/programming