类型推断最佳通用类型
let x = [0, 1, null] class Animal { numLegs: number } class Bee extends Animal { } class Lion extends Animal { } let zoo = [new Bee(), new Lion()] //上述例子我们想让zoo推断为Animal数组类型 //但是这个数组中没有对象明确是Animal类型的 //因此zoo不能推断出 //可以明确声明出期望的类型 let zoo1: Animal[] = [new Bee(), new Lion()] //如果我们没有声明,类型推断会根据Bee和Lion推断出联合声明类型
类型推断之上下文类型
window.onmousedown = function (mouseEvent) { //console.log(mouseEvent.clickTime)//报错 //mouseEvent上没有clickTime属性 //TS会根据window.mousedown推断出mouseEvent类型 }
//我们可以指出mouseEvent类型 window.onmousedown = function (mouseEvent :any) { console.log(mouseEvent.clickTime) }
class Animal { numLegs: number } class Bee extends Animal { } class Lion extends Animal { } function createZoo(): Animal[] { return [new Bee(), new Lion()] //这个例子最佳通用类型有三个分别是 //Animal,Lion,Bee类型 //在这里我们使用Animal作为最佳通用类型 }
2019-05-29 16:02:13