Skip to content

Commit 5e903d8

Browse files
author
victorsun
committed
upd ts
1 parent e6b6e37 commit 5e903d8

36 files changed

+5259
-6390
lines changed

18-TypeScript/01-start.ts

-12
This file was deleted.

18-TypeScript/01-类型.ts

+99
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
/**
2+
* number
3+
* string
4+
* boolean
5+
* 字面量 如下方a、b
6+
* any
7+
* unknown 类型安全的any
8+
* void 空值(undefined/null),主要用于函数返回值
9+
* never 不能是任何值
10+
* object
11+
* array
12+
* tuple 元组,ts新增类型,固定长度数组
13+
* enum enum{A,B} 枚举,ts新增类型
14+
*/
15+
16+
let s: string;
17+
18+
// 字面量
19+
let a: 'male' | 'female';
20+
let b: boolean | string | number;
21+
22+
// any & unknown
23+
let c: any;
24+
s = c;
25+
let d: unknown; // 表示未知类型的值,是一个类型安全的any,区别在于不能直接赋值给其他变量
26+
d = 10;
27+
d = 'hello';
28+
d = true;
29+
// s = d;
30+
if (typeof d === 'string') {
31+
s = d;
32+
}
33+
34+
// 类型断言
35+
s = d as string; // 变量 as 类型
36+
s = <string>d; // <类型>变量
37+
38+
// void
39+
function fn(): void {}
40+
41+
// never 表示永远不会返回结果
42+
function fn2(): never {
43+
throw new Error('报错,立即结束,无返回值');
44+
}
45+
46+
// object
47+
let e: object;
48+
e = {};
49+
e = function (){}
50+
// {} 用于指定对象包含的属性, ?表示属性可选,[propName:string]:any表示任意类型的属性
51+
let f: {name: string, age?: number, [propName: string]: any};
52+
f = {name: 'sunshine', xxx: 1};
53+
54+
// 函数结构类型声明
55+
let g: (a:number,b:number)=>number;
56+
g = function(n1: number, n2: number): number {
57+
return 10;
58+
}
59+
60+
// 数组
61+
let h: string[];
62+
let i: Array<number>;
63+
64+
// tuple 元组,固定长度数组
65+
let j: [string, number];
66+
j = ['hello', 0];
67+
68+
// enum 枚举
69+
/*
70+
let k: { name: string, gender: 0 | 1};
71+
k = {
72+
name: 'sunshine',
73+
gender: 0,
74+
}
75+
console.log(k.gender === 0);*/
76+
enum Gender {
77+
Male = 0,
78+
Female = 1,
79+
}
80+
let k: { name: string, gender: Gender};
81+
k = {
82+
name: 'sunshine',
83+
gender: Gender.Male,
84+
}
85+
console.log(k.gender === Gender.Male);
86+
87+
// &且 |或
88+
let l: {name: string} & {age: number};
89+
l = {name: 'sunshine', age: 1}
90+
let m: 1|2|3;
91+
92+
// 类型别名
93+
type myType = 1|2|3;
94+
let n: myType;
95+
96+
97+
98+
99+

18-TypeScript/02-编译选项.ts

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// tsconfig.json 可以写注释
2+
3+
4+
// noImplicitAny
5+
function fn3(a: number, b: number) {
6+
return a + b;
7+
}
8+
9+
// noImplicitThis
10+
function fn4(this: Window) {
11+
alert(this);
12+
}

18-TypeScript/03-webpack/README.md

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
2+
```
3+
$ npm init
4+
$ npm i -D webpack webpack-cli typescript ts-loader
5+
...
6+
$ npm run build
7+
8+
$ npm i -D html-webpack-plugin
9+
$ npm i -D webpack-dev-server
10+
$ npm i -D clean-webpack-plugin
11+
12+
$ npm i -D @babel/core @babel/preset-env babel-loader core-js
13+
```
14+
15+
ts设置target只能处理简单语法的兼容,引入babel+corejs可以支持如promise等语法的处理

0 commit comments

Comments
 (0)