在TypeScript中,我们可以使用let和const关键字来声明变量。let用于声明可变变量,const用于声明不可变变量(即常量)。
- 数字类型(Number)
let decimal: number = 6;
let hex: number = 0xff00ff;
let binary: number = 0b1010;
let octal: number = 0o744;
- 字符串类型(String)
let color: string = "blue";
color = 'red';
- 布尔类型(Boolean)
let isRight: boolean = true;
isRight = false;
- 数组类型(Array)
let list: number[] = [1, 2, 3];
let list: Array<number> = [1, 2, 3];
- 元组类型(Tuple)
元组类型允许你声明一个数组,其中的每个元素都可以是不同的类型。
let x: [string, number];
x = ['hello', 10]; // OK
x = [10, 'hello']; // Error
- 枚举类型(Enum)
枚举类型用于定义数值集合。
enum Color {
Red = 1,
Green = 2,
Blue = 4
}
let colorName: Color = Color.Green;
- 任意类型(Any)
任意类型用于表示可以赋予任何值。
let notSure: any = 10;
notSure = "I am not sure";
notSure = false;
- 空类型(Void)
空类型用于表示没有任何类型,一般用于函数返回值。
function warnUser(): void {
console.log("This is a warning message");
}
- 未定义类型和空值(Undefined and Null)
let u: undefined = undefined;
let n: null = null;
- Never类型
never类型表示的是那些永远不会返回结果的类型。
function error(message: string): never {
throw new Error(message);
}
function infiniteLoop(): never {
while (true) {
}
}
- 类型断言
有时候你会知道一个实体的类型比TypeScript更准确,但是它不会自动识别。在这种情况下,你可以使用类型断言来告诉TypeScript你知道的比它更多。
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
let strLength: number = (someValue as string).length;
- 类型别名
你可以使用type关键字来给一个类型定义一个别名。
type Name = string;
type NameResolver = () => string;
type NameOrResolver = Name | NameResolver;
- 接口
接口可以用来定义复杂类型。
interface Person {
name: string;
age: number;
}
let tom: Person = {
name: "Tom",
age: 25
};
- 类型守卫
有时你需要检查一个类型,并在该类型为某个特定类型时执行某些操作。 你可以使用typeof类型保护来做到这一点。
function padLeft(value: string, padding: string | number) {
if (typeof padding === 'number') {
return Array(padding + 1).join(' ')