audio type多种类型_十三、typescript与es6—Types类型

本文介绍了TypeScript的类型系统,包括基本类型、数组、函数、枚举、类与接口、any类型、void类型、类型断言、泛型以及可选类型。通过示例展示了如何在TS中进行类型约束和校验,帮助提升代码的健壮性。
摘要由CSDN通过智能技术生成

类型校验

通常的,我们在写javascript代码的时候,报错最多的原因就是拼写错误,而我们也我们只有在遇到运行时错误时才会发现错误

然后在其他语言中,如java,会有类型检查器,在编译阶段,它首先检查代码中的一些简单错误,如果发现任何错误,就会出现错误

TypeScripts的编译器也有类型检查,然后只有在申明类型的时候才会检查

在javascript中一般这样写

let a;

a = 1;

a = '2';

本来我们希望变量a是个数字类型的,但是在赋值过程中不小心赋值成了字符串,但是这样的行为在javascript是不会报错的

在typescript中,我们就能用强类型约束,让变量a一直都是个数字类型

let a: number = 1;

如果我们把其赋值成字符串

a = "1";

那么,将会出现编译错误

error TS2322: Type 'string' is not assignable to type 'number'.

支持类型

基本类型

typescript可以支持boolean,number和string

let decimal: number = 6;

let done: boolean = false;

let color: string = "blue";

Array

有两个方式可以约束数组类型

第一种是用方括号,比如:

let list: number[] = [1, 2, 3];

上面显示的是这个数组应该只保存数字的类型。

第二种方法用泛型的方式声明,Array

let list: Array = [1, 2, 3];

Function

我们可以定义一个变量指向函数

let fun: Function = () => console.log("Hello");

使用typescript可以定义预期的函数返回值

function returnNumber(): number {

return 1;

}

上面的例子表示,函数的返回值必须是个number类型的值

枚举Enum

Enum是一种数据类型,由一组命名的值组成,名称通常是作为常量的标识符

enum Direction {

Up,

Down,

Left,

Right

}

let go: Direction;

go = Direction.Up;

类和接口

类和接口也是种类型,可以如下使用

class Person {};

let person: Person;

let people: Person[];

any

如果不知道使用哪种类型,或者数据值是多变的,那么就使用any类型

let notsure: any = 1;

notsure = "hello"; // any类型不会校验值

void无返回值

void意味着没有类型,通常表示函数没有返回值

function returnNothing(): void {

console.log("Moo");

}

类型断言

有的时候声明的类型是any或者联合类型==let a:number | string==的时候,类型断言就能用上了

let value: any = "Asim Hussain";

let length: number = (value).length;

(value) 是为了判定在这里的value是string类型的

泛型

利用typescript编译时校验类型的特点,我们可以写可复用代码

class Audio {}

class Video {}

class Link {}

class Text {}

class Post {

content: any;

}

上面的Post类有个content属性,是any类型,意味着他可能是Audio,或者是Video,Link,Text类型的,着同时也意味着他不会在编译的时候被校验

这样的话,我们可以分开创建AudioPost, VideoPost, LinkPost和TextPost

class AudioPost {

content: Audio;

}

class VideoPost {

content: Video;

}

class LinkPost {

content: Link;

}

class TextPost {

content: Text;

}

但是这样写感觉代码很长,很繁琐,如果要添加还得再创建个类型,使用泛型我们可以动态的生成类型

class Audio {}

class Video {}

class Link {}

class Text {}

class Post {

content: any;

}

是个泛型,T是类型变量,其实我们可以随便命名T,但是在一个的情况下,我们通常都叫T,这样我们用T就可以是任意类型了

class Post {

content: T;

}

这样我们创建特殊类型的Post,就可以直接使用了

let videoPost: Post;

可选类型

一般情况下,我们不需要添加类型

let answer;

answer = 42;

这样typescript在编译的时候不会校验类型,默认当做any类型处理

==这种事可以在tsconfig.json中配置的,设置属性为noImplicitAny,设置为诶true的话就会报错,默认情况下是false==

类型的外部链接库

如果想用某个代码,不是用typescript写的,或者说不打算用typescript编译,那么就可以使用==环境类型==

这是一个包含关于另一个库中的类型的元数据的文件,一个元类型文件

这个存储库(https://github.com/definitelytype/DefinitelyTyped)

包含了一些最流行的第三方javascript库的类型定义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值