xb18
xb18
文章78
标签0
分类0
typescript

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]; // 数组元素类型为 number

使用泛型数组类型(Array):

1
const myArray: Array<number> = [1, 2, 3, 4]; // 数组元素类型为 number

使用接口或类型别名定义数组类型:

1
2
3
4
5
6
interface MyType {
name: string;
age: number;
}

const myArray: MyType[] = [{ name: "John", age: 25 }, { name: "Jane", age: 30 }]; // 数组元素类型为 MyType

使用元组类型定义数组类型(固定长度和类型的数组):

1
const myArray: [string, number, boolean] = ["hello", 42, true]; // 数组长度为 3,元素类型为 string, number, boolean

无论您选择哪种方式,都可以根据需求来声明和使用数组类型。请根据具体情况选择最适合的方式来声明数组的类型。

枚举

在 TypeScript 中,您可以使用 enum 关键字来声明枚举。枚举允许您定义一组命名的常量值。

以下是一个示例,展示了如何声明一个名为 Color 的枚举:

1
2
3
4
5
enum Color {
Red,
Green,
Blue
}

在这个示例中,Color 枚举定义了三个成员:RedGreenBlue。通过枚举,这些成员被赋予了数字值,从 0 开始自动递增。因此,在这个示例中,Red 的值为 0,Green 的值为 1,Blue 的值为 2。

枚举的成员可以通过名称进行访问。例如,要使用 Color 枚举的 Red 成员,可以这样做:

1
2
const colorValue: Color = Color.Red;
console.log(colorValue); // 输出: 0

此外,您还可以为枚举成员指定自定义的值。例如:

1
2
3
4
5
6
7
8
enum Color {
Red = 1,
Green = 2,
Blue = 4
}

const colorValue: Color = Color.Green;
console.log(colorValue); // 输出: 2

在这个示例中,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
// 定义一个函数,该函数返回一个Promise
function fetchData(): Promise<string> {
// 这个Promise在resolve时将返回一个string类型的值
return new Promise((resolve, reject) => {
// 模拟异步操作,比如从服务器获取数据
setTimeout(() => {
const data: string = "Hello, World!";
resolve(data); // resolve时返回的数据类型是string
}, 1000);
});
}

// 使用该函数
fetchData().then((data) => {
// 在这里,TypeScript知道data的类型是string
console.log(data.toUpperCase()); // 可以安全地调用string类型的方法
}).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类型,而是尽量明确地指定类型。

本文作者:xb18
本文链接:https://moelj.com/2023/10/27/typescript/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可