typescript 安装使用
1.安装
1)安装命令
>npm install -g typescript
2)查看ts版本号(PS:ts指的是typescript)
>tsc -v
3)编译命令
>tsc 文件名.ts
4)安装ts-node
>npm install -g ts-node
5)编译命令
>ts-node 文件名.ts
2.基础类型
1)布尔类型
let isDone: boolean = false;
2)数字类型
let age: number = 25;
let binaryNumber: number = 0b1010; // 二进制数字
3)字符串类型
let name: string = 'mamba';
let desc:string = `My name is ${mamba}, age ${age}`;
4)undefined和null
let u: undefined = undefined;
let n: null = null;
说明:undefined和null是所有类型的子类型
问题:undefined和null的区别?
参考文章:https://www.jianshu.com/p/705c628eafc3
undefined:a.定义变量未赋值 b.访问对象不存在属性或者未定义变量 c.函数中定义了形参,未传实参 d.使用void对表达式求值
null:a.如果定义的变量在将来用于保存对象,那么最好将该变量初始化为null
b.当一个数据不再需要使用时,我们最好将其设置为null来释放其引用
注:特殊的typeof null 当我们使用typeof操作符检测null值,返回的类型却是“object”
总结:undefined表示一个变量自然的,最原始的状态值,而null则表示一个变量被人为的设置为空对象,而不是原始状态。不要对一个变量显式的赋值undefined,当需要释放一个对象时用null即可。
3.any类型和联合类型
1)any类型
说明:允许赋值为任何类型
let anyKind: any = 4;
anyKind = 'wo shi any lei xing xixi';
anyKind = false;
2)联合类型
说明:多种类型设置
let numOrStr: number | string = 234;
numOrStr = 'mamba';
4.Array和Tuple类型
1)Array
let arrOfStr: string[] = ['job', 'xiaoming', 'zzz'];
arrOfStr.push('wz');
2)Tuple元组,可以放不同类型的数据
let user: [string, number] = ['google', 12]
5.interface接口
说明:a.对对象的形状(shape)进行描述 b.对类(class)进行抽象 c.对类(class)进行抽象 d.Duck Typing 鸭子类型
1)定义接口
interface Person{
readonly id: number; // 只读属性,定义时候赋值,不能修改
name: string;
age?: number; // ?符合表示可选属性
}
2)定义变量,按照上面接口规范
let mamba: Person = {
id: 1,
name:'mamba',
age:13
}
// 报错不能修改: mamba.id = 2;
说明:const定义常量 readonly用在属性上
6.函数和判断类型
1)函数声明写法
function add(x: number, y: number, z: number = 10): number{
// 参数z可选
if(typeof z === 'number'){
return x + y + z;
}else{
return x + y;
}
}
2)函数表达式写法
const add2 = function(x: number, y: number, z: number = 10): number{
if(typeof z == 'number'){
return x + y + z;
}else{
return x + y;
}
}
// '=>'符号是ts中声明函数类型返回值的方法
const add3: (x: number, y: number, z?: number) => number = add2;
补充:ts中的类型推论是什么?
最基本的描述就是根据右侧的值推断左侧变量的类型。
a.多类型联合:当我们定义一个数组或者元组这种包含多个元素的值的时候,多个元素可以有不同的类型,这时候 typescript 会将多个类型合并起来,组成一个联合类型
b.上下文类型:根据左侧的类型推断右侧的类型
posted on 2022-04-20 09:40 zyp_java_net 阅读(164) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?