1.TypeScript变量和编译选项

一:TypeScript是什么

1.以JavaScript为基础构建的语言

2.一个JavaScript的超集

3.可以在任何支持JavaScript的平台执行,但是TS不能被JS解析器直接执行,需要中间商()先将TS编译成JS

4.TS扩展了JS,并添加了类型

二:TS增加了什么

1.TS给变量设置了类型

2.TS增加很多新的数据类型

3.支持ES的新特性

4.添加ES不具备的新特性:抽象类,接口,各种工具,装饰器。

5.丰富的配置选项:①对类型的控制可以严谨也可以不

②指定兼容

6.强大的开发工具

三:TS开发环境搭建 和 使用

1.下载并安装Node.js或者此链接左侧版本

2.使用npm全局安装typescript:在命令行输入 npm i -g typescript

安装成功

 3.创建一个ts文件


但是我们网页不认识.ts文件。 我们需要用编译器tsc将ts转换成js

4.使用tsc将ts编译成js

 在此文件所在文件夹打开cmd命令行,输入:tsc 文件名.ts    (或者在vscode使用快捷键 ctrl+~ 打开命令行)

 回车,无报错弹出代表成功,此时目录新增

四:TS的类型声明

参考此链接

1.变量类型声明

 上图报错但是可以用tsc解析成js,后续可以添加配置,当代码有错误时,编译js不成功

 

2.函数参数类型声明

3.函数返回值类型声明 

五:TS的变量声明

1.声明为指定值 :只能为10,此时为11都不行

let a : 10;
a = 10;
//a = 11; 报错,值只能为10

2.声明用|隔开 :可以使用 | 来连接多个类型(联合类型)

①值只能为固定的二者之一

②值只能为指定类型的

3. 声明为any :指定为任意类型,均不报错

let a : any;
//或者 let a;  不写时自动认为时any
a = 1;
a = '哈哈';
a = true 

4. 声明为 : unknown 不确定值类型

let a : unknown;
a = 1;
a = '哈哈';
a = true 

any和unknow(严谨)的区别:

如果想让any变得更加严谨

if(typeof a === "string"){
    x = a
}

如果想让unknown不报错

(类型断言)
// 写法1
x = a as string;
// 方法2
x = <string>a;

5.声明为 :void  用于标识方法返回值的类型,表示该方法没有返回值。

function hello(): void {
    alert("Hello Runoob");
}

6. 声明为:never → 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值。

这意味着声明为 never 类型的变量只能被 never 类型所赋值,在函数中它通常表现为抛出异常(程序终止,无返回值)或无法执行到终止点(例如无限循环),示例代码如下:

let x: never;
let y: number;

// 编译错误,数字类型不能转为 never 类型 ;( never ) 是num的子类
x = 123;

// 运行正确,never 类型可以赋值给 never类型
x = (()=>{ throw new Error('exception')})();

// 运行正确,never 类型可以赋值给 数字类型 ;( never ) 是num的子类
y = (()=>{ throw new Error('exception')})();

// 返回值为 never 的函数可以是抛出异常的情况
function error(message: string): never {
    throw new Error(message);
}

// 返回值为 never 的函数可以是无法被执行到的终止点的情况
function loop(): never {
    while (true) {}
}

7.声明为 : {} → 限制变量值是对象

let b:{name:string, age?:number};  // ? 代表可选属性,有无均可
b = {name:'杨杨',age:18};
b = {name:'杨杨'}; 

上述声明不严谨,如下情况报错

let b:{name:string};  // 只限制了name属性
b = {name:'杨杨'};    // 不报错
b = {name:'杨杨',age:18,c:5,d:5};  //报错 因为新增了其他属性

解决方法:[xxx:string]:any   (string是因为js里面的属性名其实就是字符串)

    翻译为:[任意字符串的属性名xxx]:任意类型的变量

let b:{name:string,[qita:string]:any};  // 只限制了name属性 (any 对 name的也有限制)
b = {name:'杨杨'};    // 不报错
b = {name:'杨杨',age:18,c:5,d:5};  //不报错 
b = {myName:'杨杨',age:18,c:5,d:5};  //报错, 此时要求变量中必须包含name
b = {myName:'杨杨',name:'嘿嘿',age:18,c:5,d:5};  //不报错, 此时要求变量中必须包含name

8.函数的类型声明:

d是一个函数,a和b是变量(限制类型是number),返回值类型也要求是number

9.数组的类型声明

①类型[]   ②Array<类型>

10.  tuple元组:固定长度的数组

 固定长度为2

11.  enum 枚举

 六:TS文件的编译选项

1.监视TS文件变化并且自动编译 tsc name.ts -w

 关掉用 ctrl+c

同时编译文件夹下所有ts文件:先在同级目录下创建tsconfig.json 然后在命令行输入 tsc 此时同时监视并编译

2.tsconfig.json 里面的编译项 include 和 exclude

3.tsconfig.json 里面的编译项compilerOptions 及其子项

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值