复杂基础类型
数组:
ts的数组和元组转译为js后都是数组。
1.数组类型(Array)
- ts中可以像js一样定义数组类型,并且指定数组元素的类型。
- 定义:使用[]定义、使用Array泛型。但不推荐泛型:避免与jsx语法冲突,减少代码量。
- 明确指定数组元素的类型,不符合类型约定都会报错
/** 子元素是数字类型的数组 */
let arrayOfNumber: number[] = [1, 2, 3];
let arrayOfNumber: Array<number> = [1, 2, 3];
/** 子元素是字符串类型的数组 */
let arrayOfString: string[] = ['x', 'y', 'z'];
let arrayOfString: Array<string> = ['x', 'y', 'z'];
/** 定义好后不符合类型约定都会报错 */
let arrayOfNumber: number[] = ['x', 'y', 'z']; // 提示 ts(2322)
arrayOfNumber[3] = 'a'; // 提示 ts(2322)
arrayOfNumber.push('b'); // 提示 ts(2345)
let arrayOfString: string[] = [1, 2, 3]; // 提示 ts(2322)
arrayOfString[3] = 1; // 提示 ts(2322)
arrayOfString.push(2); // 提示 ts(2345)
2.元组类型(Tuple)
- 最重要的特性是可以限制数组元素的个数和类型,特别适合用来实现多值返回。
- 数组类型的值只有显示添加了元组类型注解后(或者使用 as const,声明为只读元组),ts才会把它当作元组,否则推荐出来的类型就是普通的数组类型
const x: [State, SetState] = [state, setState];
const y: [SetState, State] = [setState, state];
特殊类型:any、
any:任意类型