Typescript入门笔记(上)|青训营笔记

98 阅读2分钟

字节青训营|Typescript入门笔记(上)

这是我参与「第四届青训营 」笔记创作活动的第1天

一、如何区分TypeScript与JavaScript?

JS属于动态类型的脚本语言,而TS属于静态类型语言。

  • 动态类型语言会在执行时进行类型匹配的检验
  • 静态类型语言(python、js)是需要先通过编译来进行检验类型的匹配。

TS与JS都是弱类型语言。如何区分强类型和弱类型语言?

  • 强类型语言:不能自动进行类型转换。
  • 弱类型语言:可以进行类型转换,比如字符串的1和数字的1进行加减是可以执行的。

二、TypeScript的好处

  1. 静态类型

可读性增强:基于语法解析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;