TypeScript基础-类型推论

南山隐士 2022年06月25日 26 0

类型推论

类型推论 指的是我们在没有定义类型的时候, typescript会推论出具体的类型

基础

let x = 3

这个例子中,我们没有定义x的类型为number, 但是typescript会推论出其为number类型, ==这种推断发生在初始化变量和成员,设置默认参数值和决定函数返回值时==

最佳通用类型

当有多个可能存在的类型的时候,typescript会兼容所有的类型,这些类型我们称为候选类型

let y = [0, 1, null, 'string'];

y = ['Author:YaoJin']

最佳通用类型是从候选类型中进行寻找的, 比如,我们上面的例子中,最终通用类型就为string, 从多个候选中,找到最佳的

当所有的候选类型 共享相同的通用类型的时候

class Animal { }

class Dog extends Animal { }

class Cat extends Animal { }

class Fish extends Animal { }

let food: Animal[] = [new Dog(), new Cat(), new Fish()];

我的理解是, 像上面的例子中, 通用类型可能为 一个class实例, 可是候选中没有满足Animal的类型, 这个我们需要明确地指出类型

上下文类型

上下文类型 是指 根据语境来推断,所以很多情况都会用到,比如函数的参数,赋值表达式的右边,类型断言,对象成员和数组字面量和返回值语句, 像我们最开始的例子, 就是根据表达式的右边来决定

function createFood(): Animal[] {
  return [new Dog(), new Cat(), new Fish()];
}

这个例子最佳通用类型为Animal, 根据返回值来定义

存疑

最佳通用类型
官网的例子说 候选类型共享相同的通用类型, 可是例子却有3个不同的class类型,可是按理来说类型应该是不相同的, 怎么会共享相同的通用的类型

Last Updated: 2022/06/25 19:13:47
TypeScript基础-枚举 TypeScript基础-类型兼容性