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

 

 
posted @ 2020-05-26 06:34  wzndkj  阅读(4688)  评论(1编辑  收藏  举报