# 原始类型
ts的原始数据类型就是js的基础数据类型
string,number,boolean,null,undefined,symbol
根据初始的赋值来推导出变量的类型,并且以后的类型不可改变。
export {}; // 第一行增加这个是为了使文件里的变量不污染全局
// number
let num: number = 1;
// string
let str: string = "2";
// boolean
let bool: boolean = true;
// null
let nul: null = null;
// undefined
let und: undefined = undefined;
// symbol(Symbol创建的变量内存地址永远都是新建的,即使两个一摸一样的变量,其值也永不相等)
let sy: symbol = Symbol("123");
let vd: void = undefined; // 可以把undefined类型赋值给void类型,但是反过来不行
// 在ts中函数没有返回值,函数类型就是void
function fn(): void {}
// 如果函数类型想指定undefined,则必须 return undefined
function fun(): undefined {
return undefined;
}
注意:
- void只用在函数没有返回值的情形下。
- undefined和null最大的价值主要体现在接口类型上,表示可缺省、未定义的属性;null表示对象或者属性是空值。
- 如果不写类型,typescript是可以推断类型的,但注意let、const的区别
在ts中let和const的区别:
let 它的值决定它的类型
const 它的值就是它的类型(常量不能被修改,所以它的值就是它的类型)
# 对象类型
object
Object
{}
export {};
// object 只包含数组和对象【常用】
let obj: object = { a: 1 };
let arr: object = [1];
// Object或{}
// 除了包含数组和对象外,还包含number、string、boolean、Symbol。
// null和undefined除外
let obj1: Object = { a: 1 };
let arr1: Object = [1];
let num1: Object = 1;
let obj2: {} = { b: 2 };
let arr2: {} = [2];
let num2: {} = 2;
# 数组类型
//第一种写法: 元素类型[]
let arr1: number[] = [1, 2, 3];
let arr2: { a: number; b: string }[] = [
{ a: 1, b: "aa" },
{ a: 2, b: "bb" },
{ a: 3, b: "cc" },
];
//第二种写法:泛型
let arr3: Array<number> = [1, 2, 3];
let arr4: Array<{ a: number; b: string }> = [
{ a: 1, b: "aa" },
{ a: 2, b: "bb" },
{ a: 3, b: "cc" },
];
# 元组
元组 长度固定的数组 因为长度固定 , 需要指定里面每一个元素的类型 元组 不能用 push pop shift unshift splice
let arr1: [number, number, string] = [1, 2, "c"];
let arr2: (number | string)[] = [1, 2, "c"];