百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

「前端基础」交互控制——TypeScript基础

toyiye 2024-08-19 01:06 5 浏览 0 评论

TypeScript——基本类型

/**

* @布尔

*/

let isDone: boolean = false;

/**

* @数字

*/

let notANumber: number = NaN;

let infinityNumber: number = Infinity;

let decLiteral: number = 6;

let hexLiteral: number = 0xf00d;

/**

* @字符串

*/

let username: string = `Gene`;

let sentence: string = `Hello, my name is ${ name }.`

/**

* @数组类型

*/

let fibonacci1: number[] = [1, 1, 2, 3, 5];

let fibonacci2: Array<number> = [1, 1, 2, 3, 5];

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

TypeScript——枚举类型

/**

* @数字枚举

*/

enum Direction {// Up的值为 0, Down的值为 1等等

Up,

Down,

Left,

Right,

}

enum Direction2 {// Up的值为 0, Down的值为 1等等

Up,

Down,

Left,

Right,

}

/**

* @字符枚举

*/

enum StudentGrade{

kindergarten= '幼儿园',

grade1='一年级',

grade2='二年級'

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

TypeScript——函数类型

可选参数

类型提升中不强制要求必须传参,但要求这个参数必须在最后用?号标记

function buildName(firstName: string, lastName = "Smith", fullName?: string) {

return firstName + " " + lastName;

}

1

2

3

剩余参数

在最后用…变量名标记

function push(array: any[], ...items: any[]) {

items.forEach(function(item) {

array.push(item);

});

}

1

2

3

4

5

参数类型:

(1)单值类型

function fun(num:string) {

}

1

2

类型推断,第二个报错

(2)联合类型

注意,尽量不适用联合类型导致类型推导不完整

返回值类型

(1)单值类型

function fun() : string{

return "string"

}

1

2

3

可以直接类型推导它内部的函数

(2)联合类型

function fun() : string|number{

return "string"

}

1

2

3

(3)nerver类型

一定会产生错误或者死循环

function error(message: string): never {

throw new Error(message);

}

1

2

3

TypeScript——类/接口/对象/type

class Animal{

name: string;

constructor(value: string) {// 构造函数

this.name = value;

}

greet(distance: number = 0) {

return `Hello, ${this.name} move ${distance}`;

}

static origin = {x: 0, y:0}; // 静态属性

private greeting: string; // 私有属性

readonly name: string = 'onlyread'; // 只读属性

protected greet() { // 受保护

return 'Hello, ' + this.greeting;

}

public speed() { // 公有方法

console.log('Test');

}

set greet(value) { // set

this.name = value;

}

get speed() { // get

return this.name;

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

接口

接口主要用于说明实体的结构,而类是结构的具体实现

?号————代表可选参数

T 号————代表动态泛型

结构声明

export interface EntityResponse<T> {//对象数据结构

code: number

errorMessage?: string

returnObject?:T

}

export interface PageResponse<T> {//分页数据结构

code: number

errorMessage?: string

returnObject?: {

total: number,

list: Array<T>,

}

}

export interface ResponseV0{//键值类型结构

[key: string]: any

};

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

结构应用

(1)给js对象加断言约束

let responsVO:EntityResponse<string>={

code:200,

errorMessage:"",

returnObject:""

}

1

2

3

4

5

(2)给了class对象加结构约束

class ResponseVo <T> implements EntityResponse<T>{

code: number

errorMessage?: string

returnObject?:T

constructor(code: number,errorMessage?: string,returnObject?:T){

this.code=code;

this.errorMessage=errorMessage;

this.returnObject=returnObject;

}

}

1

2

3

4

5

6

7

8

9

10

(3)给方法参数加约束

这里用到了方法泛型

function fun <T>(response:EntityResponse<T>){


}

/*

注意,类实现了接口也可以作为参数被同意与java一样

*/

fun(new ResponseVo(200))

1

2

3

4

5

6

7

TypeScript——泛型

泛型类型

方法泛型

function fun <T>(response:EntityResponse<T>){


}

1

2

3

类泛型

class ResponseVo <T> {

code: number

errorMessage?: string

returnObject?:T

constructor(code: number,errorMessage?: string,returnObject?:T){

this.code=code;

this.errorMessage=errorMessage;

this.returnObject=returnObject;

}

}

1

2

3

4

5

6

7

8

9

10

接口泛型

export interface EntityResponse<T> {//对象数据结构

code: number

errorMessage?: string

returnObject?:T

}

1

2

3

4

5

泛型应用

约束/提示

直接加载类、方法参数、对象上时起到了约束的作用

加到返回值起到了提示的作用或者一些变量类型的推导

泛型变量传递

当接口需要泛型时可以由方法泛型来指定,类也是如此类实现了接口,可以由类再外部指定的泛型再传给接口;

function fun <T>(response:EntityResponse<T>){


}

1

2

3

泛型操作(待完善)

多泛型

class ResponseVo <T,U> implements EntityResponse<T>{}

1

泛型的下界

这个返回值的类型继承了EntityResponse

function request<T extends EntityResponse<T>>()

1

TypeScript——断言操作

语法断言

let str: string;//声明断言

let val: number = (str as string).length;//as 断言

let val2: number = (<string>str).length;//强转 断言

1

2

3

语句断言

if (typeof param === 'string') {

let temp = param; //ok 此处param为string

}

if ( str instanceof string) {

str ; //ok 此处str 为string

}

1

2

3

4

5

6

TypeScript——其他

类型别名——type

(1)应用方式

/*

基本使用

*/

type Name = string;

type NameResolver = () => string;

type NameOrResolver = Name | NameResolver;

function getName(n: NameOrResolver): Name {

if (typeof n === 'string') {

return n;

}

else {

return n();

}

}

/*

泛型使用

*/

type Container<T> = { value: T };

/*

递归使用

*/

type Tree<T> = {

value: T;

left: Tree<T>;

right: Tree<T>;

}

/*

合并使用

*/

type LinkedList<T> = T & { next: LinkedList<T> };

interface Person {

name: string;

}

//var people: LinkedList<Person>;

//var s = people.name;

//var s = people.next.name;

//var s = people.next.next.name;

//var s = people.next.next.next.name;

/*

错误使用

*/

type Yikes = Array<Yikes>; // 右边不能引用自己

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

37

38

39

40

41

42

43

(2)逻辑操作

/**

* @Exclude<T, U>,T中排除U

*/

type T00 = Exclude<"a" | "b" | "c" | "d", "a" | "c" | "f">; // "b" | "d"

/**

* @Extract<T, U>,T和U取并集

*/

type T01 = Extract<"a" | "b" | "c" | "d", "a" | "c" | "f">; // "a" | "c"

type T02 = Exclude<string | number | (() => void), Function>; // string | number

type T03 = Extract<string | number | (() => void), Function>; // () => void

/**

* @Extract,剔除null和undefined

*/

type T04 = NonNullable<string | number | undefined>; // string | number

/**

* @ReturnType<T> -- 获取函数返回值类型。

*/

function fun(s: string) {

return { a: 1, b: s };

}

type T14 = ReturnType<typeof fun>; // { a: number, b: string }y

/**

* @InstanceType<T> -- 获取构造函数类型的实例类型。

*/

class C {

x = 0;

y = 0;

}

type T20 = InstanceType<typeof C>; // C

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

字面量类型

type Easing = "ease-in" | "ease-out" | "ease-in-out";

function rollDie(): 1 | 2 | 3 | 4 | 5 | 6 {


}

type Shape = Square | Rectangle | Circle;

interface Square {

kind: "square";

size: number;

}

interface Rectangle {

kind: "rectangle";

width: number;

height: number;

}

interface Circle {

kind: "circle";

radius: number;

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

任意类型——any

任意类型则as之后则可以解决一切类型约束的限制问题,any类型不会有任何限制

let fuck=obj as any;

let fuck=(<any>obj );

1

2

索引类型查询操作符——keyof

function fun1(person:Person,str:keyof Person):void{

let person: Person = {

name: 'Jarid',

age: 35

};

fun1(person,"name");//是Person的key

fun1(person,"age");//是Person的key

fun1(person,"?");//不是Person的key,会推导出类型错误

1

2

3

4

5

6

7

8

9

索引访问操作符——T[K]

类型合并

interface ResponseVO {

code: number,

msg: string

}

interface ResponseVO {

data: string

}

let responseVO2: ResponseVO = {//报错,因为合并了

code: 1,

msg: "",

}

let responseVO1: ResponseVO = {//不报错

code: 1,

msg: "",

data: ""

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

TypeScript——symbols

用对象作为键去使用

let sym = Symbol();

let obj = {

[sym]: "value"

};

console.log(obj[sym]); // "value"

1

2

3

4

5

TypeScript——命名空间与模块系统(待更新)

相关推荐

# Python 3 # Python 3字典Dictionary(1)

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如...

Python第八课:数据类型中的字典及其函数与方法

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值...

Python中字典详解(python 中字典)

字典是Python中使用键进行索引的重要数据结构。它们是无序的项序列(键值对),这意味着顺序不被保留。键是不可变的。与列表一样,字典的值可以保存异构数据,即整数、浮点、字符串、NaN、布尔值、列表、数...

Python3.9又更新了:dict内置新功能,正式版十月见面

机器之心报道参与:一鸣、JaminPython3.8的热乎劲还没过去,Python就又双叒叕要更新了。近日,3.9版本的第四个alpha版已经开源。从文档中,我们可以看到官方透露的对dic...

Python3 基本数据类型详解(python三种基本数据类型)

文章来源:加米谷大数据Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变...

一文掌握Python的字典(python字典用法大全)

字典是Python中最强大、最灵活的内置数据结构之一。它们允许存储键值对,从而实现高效的数据检索、操作和组织。本文深入探讨了字典,涵盖了它们的创建、操作和高级用法,以帮助中级Python开发...

超级完整|Python字典详解(python字典的方法或操作)

一、字典概述01字典的格式Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key=>value对用冒号:分割,每个对之间用逗号,...

Python3.9版本新特性:字典合并操作的详细解读

处于测试阶段的Python3.9版本中有一个新特性:我们在使用Python字典时,将能够编写出更可读、更紧凑的代码啦!Python版本你现在使用哪种版本的Python?3.7分?3.5分?还是2.7...

python 自学,字典3(一些例子)(python字典有哪些基本操作)

例子11;如何批量复制字典里的内容2;如何批量修改字典的内容3;如何批量修改字典里某些指定的内容...

Python3.9中的字典合并和更新,几乎影响了所有Python程序员

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

Python3大字典:《Python3自学速查手册.pdf》限时下载中

最近有人会想了,2022了,想学Python晚不晚,学习python有前途吗?IT行业行业薪资高,发展前景好,是很多求职群里严重的香饽饽,而要进入这个高薪行业,也不是那么轻而易举的,拿信工专业的大学生...

python学习——字典(python字典基本操作)

字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值...

324页清华教授撰写【Python 3 菜鸟查询手册】火了,小白入门字典

如何入门学习python...

Python3.9中的字典合并和更新,了解一下

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

python3基础之字典(python中字典的基本操作)

字典和列表一样,也是python内置的一种数据结构。字典的结构如下图:列表用中括号[]把元素包起来,而字典是用大括号{}把元素包起来,只不过字典的每一个元素都包含键和值两部分。键和值是一一对应的...

取消回复欢迎 发表评论:

请填写验证码