基础类型
原始类型:string ,number ,boolean
// 字符串
let name: string = "toy";
// 数字
let decLiteral: number = 0;
// 布尔
let isDone: boolean = false;
// undefined 和 null
let u: undefined = undefined;
let n: null = null;
数组
// 数组 表示的两种写法
let list: number[] = [1, 2, 3];
let list2: Array<number> = [1, 2, 3];
any
any 表示任意类型,TypeScript 有一个特殊的类型 any 当你不希望一个值导致类型检查错误的时候,就可以设置为 any。不作任何类型约束。
any 也可被任意类型赋值,可以赋值给任意类型。
// 可以被赋值为任意类型
let d: any;
d = 123;
d = "hello";
// any 类型可赋值给任意类型
let sss ="hell";
sss = d;
unknow
unknown 表示未知类型,所有类型都可以赋值给unknown 类型,但与 any不同的是, unknown 类型的变量只能赋值给 any 和 unknown 类型,其他类型不允许赋值。
let s = "hello";
let an1:any = 12;
let un: unknown = "hi";
let un2: unknown = "bye";
// 任何类型都可以赋值给 unknow
un = "abc";
un = an1;
un = 123;
// unknow 类型的值只能赋值给 any 和 unknow 的,其他类型的不允许赋值
an1 = un; // 可赋值给 any
un2 = un; // 可赋值给 unknow
s = un; // error: 不能将类型“unknown”分配给类型“string”。
如果想让 unknow 赋值给其他类型:有以下两种方法
// 方法一:使用断言类型,确定类型范围
s = un as string; // 断言类型
s = <string> un;
// 方法二: 使用类型判断
if (typeof un === 'string') {
s = un;
}
never
never表示永远不存在的值,例如:那些总是会抛出异常或函数中执行无限循环的代码(死循环)的函数返回值类型
// 抛出异常
function error(msg: string): never {
throw new Error(msg);
} // 抛出异常会直接中断程序运行,这样程序就运行不到返回值那一步了,即具有不可达的终点,也就永不存在返回了
// 死循环
function loopForever(): never {
while (true) {};
} //同样程序永远无法运行到函数返回值那一步,即永不存在返回
任何类型的值都不能赋值给 never 类型, 除了never 类型本身,any 类型也不可以。
let never1:never;
let any2:any = "hi";
never1 = any2; // error: 不能将类型“any”分配给类型“never”。
void
void 表示无任何类型,一般用在函数无任何返回值或返回值为undefined 时。
function hello(): void {
console.log("Hello");
}
也可以声明void 类型的变量,但是只能将 null 和 undefined 类型的赋值给它。
let void1:void;
void1 = null;
void1 = undefined;
void1 = 123; // Error: 不能将类型“number”分配给类型“void”。
枚举
枚举是typeScript 中的新特性,用于描述一个值可能是多个常量中的一个。
// 数字枚举
enum Direction {
Up = 1,// 默认值
Down,
Left,
Right,
}
// 字符串枚举
enum Color{
Red:"red",
Green:"green",
Blue:"blue"
}
let c:Color = Color.Red
元组
元组表示一个已知元素数量和类型的数组,各元素类型不必相同,固定长度的数组,长度和类型不符时都会报错
// 元组 表示一个已知元素数量和类型的数组,各元素类型不必相同,固定长度的数组,长度和类型不符时都会报错
let x: [string, number];
x = ["hello", 1];
对象类型
object 类型 ,表示所有非原始类型,不能把原始类型的值赋值给 object
let obj:object;
obj="hi";// 不能将类型“string”分配给类型“object”。
obj =1; // 不能将类型“number”分配给类型“object”。
obj ={}
Object 代表所有拥有 toString、hasOwnProperty 方法的类型,所有原始类型都可以赋值给 Object
// Object 非原始类型
let bigObject: Object;
bigObject = "object";
bigObject = 12;
bigObject = {};
函数
// 函数声明
function add(a:number,b:number):number{
return a + b;
};
// 默认参数
function add1(a:number,b:number = 0):number{
return a + b;
};
// 可选参数
function add2(x: number, y?: number): number {
return y ? x + y : x;
}
相关文章: