typescript常用代码片-1
Easul Lv6

代码模块化

TYPESCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// 导入某个模块的方式,手动导入可以使用如下方式。在 vscode 中可以使用默认导入
// 如果导入的依赖在他的文件中只导出了一个默认的模块,那么就使用这种方式导入
import myModule from '../path/of/module'
// 如果导入的依赖在他的文件中导出了多个模块,那么就需要使用这种方式导入
import { myModule1, myModule2 } from '../path/of/module2'

// 用于定义一个类,如果需要实现接口,需要加 implements
class TestModule implements interface2 {
// 创建一个私有属性。这里用于单例的定义并赋值
private static instance: TestModule = new TestModule()
// 创建一个公有的属性
public myProperty: string = ''

// 创建一个异步的方法
// 这里第三个参数设置了默认值,所以该参数可以不传,且不传之后,该参数的默认值为定义的默认值
// 同样的,如果不定义默认值,也可以使用 ? 的形式来将该值定义为选填的参数
public async myTestFunc (firsrParam: Type1, secondParam: Type2, thirdParam = false) {
// 该方法是异步的方法,所以在内部一定有一个异步的调用,否则加这个异步的标识将失去意义
await this.myAsyncCall()
}

// 另一个异步的方法
private async myAsyncCall() {}

// 将类的单例给暴露出去
public static getInstance (): TestModule {
return TestModule.instance
}
}

// 只导出一个默认模块
export default TestModule
// 如果有单例模式,那么也可以将单例对象导出
// export default TestModule.getInstance()
// 如果需要导出多个模块,那么可以使用如下方法。可以导出 类型 接口 定义的数据 方法 等各种部分
// export { type1, interface2, definedData3, func4 }

接口定义方式

TYPESCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
interface RequestHandler {
/**
* 用于定义一个接口中的属性,前边为字段名,后边为字段类型。
* 使用文档注释可以在对象调用的时候更方便的看到该属性的作用
*/
inUseStatus: InUseStatus
/**
* 用于定义一个接口中的方法。
* 每个参数都是 参数名: 参数类型,添加了 ? 的参数表示该参数可以不传。
* 如果需要为参数设置默认值,需要在实现了接口之后再去进行默认值的赋值,如
* public test (param: string = 'hello') {}
* 如果返回值是未知的,那么就可以使用关键字 unknown
*/
handleRequest: (pluginAction: RequestPluginAction, pluginSpecificAction: RequestPluginSpecificAction, internalRequest?: boolean) => unknown
}

类型定义方式

TYPESCRIPT
1
2
3
4
5
6
7
8
9
10
11
// 为已有的类型做一个别名
type RequestPluginAction = number
// 做一个结构体的类型,数据定义是 属性名称:属性类型
// 如果属性的键不确定,需要指定某种类型的任意名称的键,可以使用 [名称:属性类型] 的形式
type RequestCode = {
[requestPluginAction: RequestPluginAction]: {
[requestPluginSpecificAction: RequestPluginSpecificAction]: {
isInUse: boolean
}
}
}

使用自定义类型定义变量

TYPESCRIPT
1
2
3
4
5
6
7
// 1. 在定义的过程中就进行变量的定义
const myVar1: Type1 = var1
// 2. 在组装了一个变量之后,然后将变量转一下类型
const myVar2 = {
name: '张三',
age: 18
} as Type2

异常使用及抛出方式

TYPESCRIPT
1
2
3
4
5
6
try {
func1()
func2()
} catch (err) {
throw new Error('我是一个抛出来的异常')
}

函数定义方式

TYPESCRIPT
1
2
3
4
5
6
const myFirstFunc = (param1: string, param2: number) => {
console.log(param1, param2)
}
function mySecondFunc (param1: string, param2: number) {
console.log(param1, param2)
}

合并多个数组

TYPESCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// 1. 数组直接合并
const testArr1 = [1, 2]
const testArr2 = [3, 4]
const newArr = [...testArr1, ...testArr2]
// 2. 将对象的键值进行合并,顺序可能发生变化
const testJson1 = {
first: 1,
second: 2
}
const testJson2 = {
thrid: 3,
forth: 4
}
const newJson = {
...testJson1,
...testJson2
}
// 3. 如果合并的时候需要进行多个操作,可以在 [] 或 {} 中写一个函数,并调用,然后返回合并的数组再展开即可
const newJson2 = {
...(() => {
let newJson :JsonTemplate = {}
for (let i = 0; i < oldJsons.length; i++) {
newJson = { ...newJson, ...oldJsons[i] }
}
return newJson
})()
}
 评论