TypeScript 基础类型和对象类型
// 基础类型 null, undefined, symbol, boolean, void const count: number = 123; const teacherName: string = 'zina';
*:如果基础类型是一行的,ts 能推断出它的类型,如果是两行就不一定了
let count; // let count: any count = 123;
这个时候,ts 并不能推断出它的类型
let count: number;
count = 123;
这才是正确的写法
// 对象类型 const teacher: { name: string, age: number } = { name: 'zina', age: 18 } // 可以看到基础类型很容易,对象类型是基础类型结合起来的更复杂的类型 // 数组也属于对象类型 const numbers: number[] = [1, 2, 3] // 这种语法意思是 numbers 是一个数组,数组中的每一项必须是个 number 类型,里面任一一个改成字符串就会报错 // 类 class Person {} const zina: Person = new Person(); // zina 必须是一个 Person 类对应的对象 // 函数 const getTotal: () => number = () =>{ return 123; } // getTotal 是一个函数,这个函数返回值是一个 number,具体函数的实现是后面的函数
总结:对象,数组,类,函数都属于对象类型,在 ts 里面有两种,基础类型和对象类型
*: 扩展
函数的两种写法
/** * 函数🉑️值是一个字符串类型,返回值是数字类型,字符串转数字 * @param str * 将鼠标放在 func 上面,可以看到参数,返回值是固定了 */ const func = (str: string): number => { return parseInt(str, 10); } // 函数的第二种写法 const func1:(str: string) => number = (str) => { return parseInt(str, 10); }
// Date 类型 const date: Date = new Date(); => const date = new Date()
ts 能推断出 Date 类型,可以不写
// 其他的 case const rawData = '{"name": "zina"}'; const newData = JSON.parse(rawData); // const newData: any // JSON.parse 并不能推断出后面的类型,如果用 JSON.parse 或其他内置函数,会遇到这种问题,需要类型注解 interface Person { name: 'string' } const rawData = '{"name": "zina"}'; const newData: Person = JSON.parse(rawData);
let temp = 123; temp = '456'; // 这种写法会报错,但有时候就是想同一个变量后续可以赋值成字符串怎么整 let temp: number | string = 123; temp = '456'; // 可以在声明变量的时候加上 string 的类型,有种像或的语法,有可能是 number,也有可能是 string