
typescript
编译选项
path
1 2 3 4 5 6 7 8 9 10 11 12
| { "compilerOptions": { "baseUrl": "src", "paths": { "app/*": ["app/*"], "config/*": ["app/_config/*"], "environment/*": ["environments/*"], "shared/*": ["app/_shared/*"], "helpers/*": ["helpers/*"], "tests/*": ["tests/*"] }, }
|
类型声明
数组
在 TypeScript 中声明一个数组的类型有以下几种方式:
使用数组类型标注:
1
| const myArray: number[] = [1, 2, 3, 4];
|
使用泛型数组类型(Array):
1
| const myArray: Array<number> = [1, 2, 3, 4];
|
使用接口或类型别名定义数组类型:
1 2 3 4 5 6
| interface MyType { name: string; age: number; }
const myArray: MyType[] = [{ name: "John", age: 25 }, { name: "Jane", age: 30 }];
|
使用元组类型定义数组类型(固定长度和类型的数组):
1
| const myArray: [string, number, boolean] = ["hello", 42, true];
|
无论您选择哪种方式,都可以根据需求来声明和使用数组类型。请根据具体情况选择最适合的方式来声明数组的类型。
枚举
在 TypeScript 中,您可以使用 enum 关键字来声明枚举。枚举允许您定义一组命名的常量值。
以下是一个示例,展示了如何声明一个名为 Color 的枚举:
1 2 3 4 5
| enum Color { Red, Green, Blue }
|
在这个示例中,Color 枚举定义了三个成员:Red、Green 和 Blue。通过枚举,这些成员被赋予了数字值,从 0 开始自动递增。因此,在这个示例中,Red 的值为 0,Green 的值为 1,Blue 的值为 2。
枚举的成员可以通过名称进行访问。例如,要使用 Color 枚举的 Red 成员,可以这样做:
1 2
| const colorValue: Color = Color.Red; console.log(colorValue);
|
此外,您还可以为枚举成员指定自定义的值。例如:
1 2 3 4 5 6 7 8
| enum Color { Red = 1, Green = 2, Blue = 4 }
const colorValue: Color = Color.Green; console.log(colorValue);
|
在这个示例中,Red 的值为 1,Green 的值为 2,Blue 的值为 4。
通过枚举,您可以更方便地使用和操作一组命名的常量值,提高代码的可读性和可维护性。
Promise
在TypeScript中,给Promise添加类型注释主要涉及到两个方面:Promise本身的类型,以及Promise resolve后返回值的类型。以下是一个简单的示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| function fetchData(): Promise<string> { return new Promise((resolve, reject) => { setTimeout(() => { const data: string = "Hello, World!"; resolve(data); }, 1000); }); }
fetchData().then((data) => { console.log(data.toUpperCase()); }).catch((error) => { console.error("An error occurred:", error); });
|
在这个示例中,fetchData函数返回一个Promise,这意味着这个Promise在resolve时将返回一个string类型的值。当你在.then回调中处理这个值时,TypeScript会自动推断出这个值的类型是string,所以你可以安全地调用string类型的方法,比如toUpperCase。
注意,如果你不确定Promise何时会resolve或reject,或者你不确定resolve时会返回什么类型的值,你可以使用any类型来避免类型错误,但这样做会失去TypeScript提供的类型安全性。例如:
1 2 3 4
| function fetchData(): Promise<any> { }
|
在实际开发中,应尽量避免使用any类型,而是尽量明确地指定类型。