TypeScript 类型推论整理

来源:互联网 发布:黑暗之魂3男号捏脸数据 编辑:程序博客网 时间:2024/04/30 12:53

一、类型推论

TypeScript里,在有些没有明确指定出类型的地方,类型推论会绑定提供类型。

1.最佳通用类型,自动给出

let x = 3;console.log(typeof x);//输出类型number//自动给出一个兼容所有类型的类型let array = [0, 2, null]console.log(typeof array);//输出类型 object
自定义指定推断类型

function __typeof__(objClass) {    if (objClass && objClass.constructor) {        var strFun = objClass.constructor.toString();        var className = strFun.substr(0, strFun.indexOf('('));        className = className.replace('function', '');        return className.replace(/(^s*)|(s*$)/ig, '');    }    return typeof (objClass);}class Animal {    name: string;    show() {        //获取当前js执行的父类名称        console.log(__typeof__(this));    }}class Rhino extends Animal {    move(distance: number) {        console.log(`Rhino当前活动:${distance}`);    }}class Elephant extends Animal {    move(distance: number) {        console.log(`Elephant当前活动:${distance}`);    }}class Snake extends Animal {    move(distance: number) {        console.log(`Snake当前活动:${distance}`);    }}let zoo = [new Rhino(), new Elephant(), new Snake()];console.info(typeof zoo);let zoo2: Animal[] = [new Rhino(), new Elephant(), new Snake()];console.info(typeof zoo2);//循环遍历zoo2.forEach(element => {    element.show();});
2.上下文类型

TypeScript类型推论也可能按照相反的方向进行,即‘按上下文归类’。表达式的类型与所处的位置相关。

window.onmousedown = function(mouseEvent) {    console.log(mouseEvent.buton);  //<- Error};
使用any类型,可以使编译器忽略,类型判断

window.onmousedown = function(mouseEvent: any) {    console.log(mouseEvent.buton);  //<- Now, no error is given};

更多:

TypeScript 枚举使用整理

TypeScript 泛型<T>使用整理

TypeScript 函数使用整理