ts基础入门d2 pixpin截图
D1回顾
ts是超集、静态:在编译时便会代码检查
命令行编译:需先下载npm i -g typescript
然后 tsc hello.ts 会将ts文件生成js文件、tsc --init 是将ts转为js的配置文件、tsc --watch监视文件中所有ts的变化
属性加?代表可选可不选
类型
string number boolean null undefined symbol object(Array、function...)
any unknown never void tuple enum type interface
大写的Number、String是包装对象object
str2=new String('hello')
断言
不是类型转换,是明确类型
D2速成
常用类型
-
let a:any
就不会推断a的类型了、且any可以赋值给任意类型的变量、可以调用其任何属性 -
let a:unknown
当你不知道该变量的类型、unknown不能赋值给其他类型(除非加if或者断言)、不能调用其任何属性let x:string
x=a as string
x=<string> a
-
function demo():never{}
限制函数不能顺利调用(死循环or不可正常运行完)never一把是ts自动推断出来的 -
function:void
可以return undefined void类型:后续不可用返回值作后续任何事情(if判断之类)(undefined类型则可以) -
let a:object
object类型是非原始类型,a可以存储非原始类型a={} //[1,2] function(){} new String("123")
-
let b:Object
b也可以存储原始类型 b=1 但b不能存null和undefined -
索引签名
let person:{
name:string,
age?:number
[key:string]:any}person={
name:'tt',
age:18,
gender:'female'}
- 函数
let count:(a:number,b:number)=>number //=>这个剪头代表函数类型
count=function(a:number,b:number):number{ //js中的=>代表具体函数实现
return a+b
}
-
let arr2:Array<string>
这个Array是泛型 -
元组 tuple不是关键字
let arr1:[string,number]
规定类型和个数let arr2:[number,...string[]]
后面的...string[]表示任意多个
-
enum 枚举
表示一组明确的可选址
enum Direction{Up,Down,Left,Right} //可以给成员设置初始值,Up=10...、若是字符串枚举,每个成员都要有字符串值,Up="Up"
fucntion changeDirection(data:Direction){
console.log(data)
}
changeDirection(Direction.Up)
数字枚举:自动递增字符串枚举 Up='up'常量枚举 const enum
-
type
能为任意类型创造别名
type Status=number | string
联合类型
type Gender="男" | “女”
联合类型
type Area={ height:number,width:number}
交叉类型 type1 & type2 -
特殊情况
type Func = ()=> void
const f1:Func =function(){
return 999} //type定义函数限制返回值为void 写函数时可以有返回值