类型注解 type annotation, 就是我们来告诉TS变量是什么类型
let count: number;
count = 123;
type inference 类型推断, 就是TS会自动的去尝试分析变量的类型

image.png
如果TS能够自动分析变量类型,我们就什么也不需要做了;如果TS无法分析变量类型的话,我们就需要使用类型注解;
-
当我们定义一个常量a为1的时候,TS不单把类型推断出来,而且值也确定了,因为a是常量,不会变化。
image.png -
这里有一点要注意,那就是如果把变量的声明和赋值放在两行,TS就不能帮我们做出类型推断了。需要手动的进行类型注解。
image.png
image.png
- 下边这种情况,TS就无法推断参数的类型了,需要我们给他添加类型注解
function getTotal(firstNumber, secondNumber) {
return firstNumber + secondNumber;
}
// 我们在调用getTotal的时候,有可能传数字,也有可能传字符串等其他类型的参数,所以firstNumber,secondNumber类型无法推断
const total = getTotal(1, 2);
function getTotal(firstNumber:number, secondNumber:number) {;
return firstNumber + secondNumber;
};
// 当确定了firstNumber,secondNumber都是number类型以后,TS就可以推断total的类型了,就不需要再给他添加类型注解了
TS实际上,就是让代码里所有的变量或属性上都有一个具体的类型。
其他case
// 此时newData 也是需要我们写类型注解,
// 因为 JSON.parse返回的内容,并不能帮助TS推断出newData 的类型。
const rawData = '{"name":"yang"}';
const newData = JSON.parse(rawData);
//此时不得不给newData 通过类型注解的方式声明一些类型
interface Person {
name:string
}
const rawData = '{"name":"yang"}';
const newData:Person = JSON.parse(rawData);
如果一个变量,有可能是number,也有可能是string怎么办呢?
let temp: number | string = 123;
temp = '456';


