TS变量类型


//  TS的变量类型
//  1.数字类型
let a: number = 1;

//  2.字符串类型
let b: string = "hello";

//  3.布尔类型
let c: boolean = true;

//  4.any类型(赋值给其他类型的时候会改变原类型,所以不常用)
let d: any = "jjjj";
d = 2;
d = false;

//  5.unKnown类型(类型安全的any)
let e: unknown = 3;
//  类型断言可以用来告诉解析器变量的实际类型,两种写法
a = e as number
a = <number>e
//  类型设置可以用"|"来设置变量的多种类型
let f: number | string;
f = 3;
f = "hello";


//  6.void类型(没有值,一般用于函数不会返回值时)
function fn(): void {

}

//  7.never类型(用于表示永远不会返回结果)
function fn2(message: string): never {
    throw new Error(message);
}

//  8.object类型(不实用,js中的object类型太多了,一般可以用{}来代替对象类型)
let g: object;
g = {};
g = () => { };

let h: {};   //表示空对象

let h2: { name: string, age: number };    //表示h2为一个对象,属性有name和age,不能多也不能少
h2 = { name: "xiaojie", age: 18 };

let h3: { name: string, age?: number };    //表示h3为一个对象,属性有name和age,age可有可无
h3 = { name: "xiaojie", age: 18 };
h3 = { name: "xiaojie" };

let h4: { name: string, [propName: string]: any };   //表示h4为一个对象,属性中必须要有name,其他属性不做要求
h4 = { name: "xiaojie", a: 1, b: "hello", c: false }

//  9.函数类型声明
let i: (a: number, b: number) => number;      //表示i为一个函数类型,参数为number类型的a和b,返回值类型也是number
i = function (n1: number, n2: number): number {
    return n1 + n2
}

//  10.数组类型,有两种表示方法
let arr: string[];     //表示字符串类型的数组
arr: Array<string>;
arr = ["hello", "world"];
let arr2: number[];      //表示number类型的数组
arr2: Array<number>;
arr2 = [1, 2, 3, 4, 5, 6];


//  11.元组类型
let yz: [string, string, number];
yz = ["hello", "world", 1];

//  12.枚举类型,常用于枚举类
enum Gender {
    Male = 1,
    Female = 0
};

let j: { name: string, gender: Gender };
j = { name: "xiaomin", gender: Gender.Male };
j = { name: "xiaohua", gender: Gender.Female };

// &表示同时
let k: { name: string } & { age: number }      //表示k对象必须满足name为string,age为number类型
k = { name: "xiaohong", age: 2 }

//  类型别名
type myType = 1 | 2 | 3 | 4 | 5;
let l: myType;
l = 2;


posted @ 2024-05-15 23:27  布偶123  阅读(4)  评论(0编辑  收藏  举报