字节青训营|Typescript入门笔记(上)
这是我参与「第四届青训营 」笔记创作活动的第1天
一、如何区分TypeScript与JavaScript?
JS属于动态类型的脚本语言,而TS属于静态类型语言。
- 动态类型语言会在执行时进行类型匹配的检验
- 静态类型语言(python、js)是需要先通过编译来进行检验类型的匹配。
TS与JS都是弱类型语言。如何区分强类型和弱类型语言?
- 强类型语言:不能自动进行类型转换。
- 弱类型语言:可以进行类型转换,比如字符串的1和数字的1进行加减是可以执行的。
二、TypeScript的好处
- 静态类型
可读性增强:基于语法解析TSDoc,ide增强。
- TypeDoc 是 TypeScript 项目的文档生成器。
- TypeDoc 可以根据 TypeScript 源代码中的注释生成对应的 HTML 文档或 JSON 模型。它是可扩展的并且支持多种配置。可作为 CLI 或节点模块使用。
可维护性增强:在编译阶段时暴露大部分错误。
在多人合作的大项目中可以提高开发效率和稳定性。
2.JS的超集
- 包含于兼容所有JS特性,支持共存
- 支持渐进式引入与升级
三、基础语法
1.基础数据类型:字符串string,数字number,布尔值boolean,null,undefined
初始化时有两种写法
const q='string'
const q: string = 'string'
2.对象类型
const Mytest: IMytest ={
id:123456,
name:'fzd',
hobby:'swimming',
}
interface IMytest={
/*只读属性:约束的属性不可再对象初始化外赋值*/
readonly id : number;
name:string;
/*可选属性:定义该属性可以不存在*/
hobby?:string;
/*任意属性:约束所有对象属性都必须是该属性的子类型*/
[key:string]: any;
}
/*对象初始化实例*/
/*报错,因为缺少name属性,但hobby属性可缺省*/
const m466,
}
/*对象属性赋值实例*/
Mytest.id=13313;//报错,因为id属性是只读属性
Mytest.sex='boy'//成功,因为任意属性标注下可以添加任意属性
3.函数类型
function del(a,b){
return a-b;
}
const mult = (x,y) => x*y ;
interface imut{
(x:number,y:number):number;
}
const mult :imut = (x,y) = > x* y;