基础类型
TypeScript 提供了一组丰富的基本类型,这些类型帮助我们在编写代码时获得更好的类型检查和代码补全。以下是 TypeScript 的一些基础类型及其用法示例。
1. 布尔值 (boolean)
布尔值类型表示逻辑值:true
或 false
。
let isDone: boolean = false;
2. 数字 (number)
和 JavaScript 一样,TypeScript 中所有的数字都是浮点数。TypeScript 支持十进制、十六进制、二进制和八进制字面量。
let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;
3. 字符串 (string)
表示文本数据的类型。可以使用双引号 ("
) 或单引号 ('
) 表示字符串。
let color: string = 'blue';
color = 'red';
还支持模板字符串,它可以跨行并且嵌入表达式。
let fullName: string = `Bob Bobbington`;
let age: number = 37;
let sentence: string = `Hello, my name is ${fullName}. I'll be ${
age + 1
} years old next month.`;
4. 数组 (array)
可以用两种方式定义数组。第一种方式,可以在元素类型后面接上 []
。
let list: number[] = [1, 2, 3];
第二种方式是使用泛型数组类型,Array<元素类型>
。
let list: Array<number> = [1, 2, 3];
5. 元组 (tuple)
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。
let x: [string, number];
x = ['hello', 10]; // 正确
// x = [10, "hello"]; // 错误
访问已知索引的元素会得到正确的类型:
console.log(x[0].substr(1)); // 正确
// console.log(x[1].substr(1)); // 错误: 'number' 类型没有 'substr' 方法
6. 枚举 (enum)
枚举类型用于定义一组命名的常量。TypeScript 提供了数字枚举和字符串枚举。
enum Color {
Red,
Green,
Blue,
}
let c: Color = Color.Green;
默认情况下,从 0
开始为元素编号。可以手动更改成员的值。
enum Color {
Red = 1,
Green,
Blue,
}
let c: Color = Color.Green; // 2
7. Any
any
类型是为了那些在编程阶段还不清楚类型的变量而设计的。使用 any
类型,可以跳过类型检查。
let notSure: any = 4;
notSure = 'maybe a string instead';
notSure = false;
8. Unknown
unknown
类型是 TypeScript 3.0 中引入的,它表示类型不确定的值。与 any
不同,unknown
类型只能在确定其类型后才能进行操作。
let notSure: unknown = 4;
notSure = 'maybe a string instead';
if (typeof notSure === 'string') {
console.log(notSure.substr(1)); // 现在可以调用 'string' 方法了
}
9. Void
某种程度上来说,void
类型像是与 any
类型相反,它表示没有任何类型。通常用于表示函数没有返回值。
function warnUser(): void {
console.log('This is my warning message');
}
10. Null 和 Undefined
TypeScript 里,null
和 undefined
有自己的类型分别叫做 null
和 undefined
。默认情况下,这两种类型是所有类型的子类型。也就是说,你可以把 null
和 undefined
赋值给其他类型的变量。
let u: undefined = undefined;
let n: null = null;
11. Never
never
类型表示的是那些永不存在的值的类型。例如,那些总是会抛出异常或根本不会有返回值的函数表达式或箭头函数表达式的返回值类型。
function error(message: string): never {
throw new Error(message);
}
function fail() {
return error('Something failed');
}
function infiniteLoop(): never {
while (true) {}
}
12. Object
object
表示非原始类型,也就是除 number
,string
,boolean
,symbol
,null
或 undefined
之外的类型。
declare function create(o: object | null): void;
create({ prop: 0 }); // 正确
create(null); // 正确
// create(42); // 错误
// create("string"); // 错误
// create(false); // 错误
// create(undefined); // 错误
总结
这些基本类型构成了 TypeScript 类型系统的基础。通过理解和使用这些基本类型,可以编写更安全、更健壮的代码。在实际开发中,TypeScript 的类型系统能够帮助你捕获许多潜在的错误,并提高代码的可维护性和可读性。
参考
https://www.typescriptlang.org/docs/handbook/2/basic-types.html