一.安装
1.npm i typescript -g
2.tsc -v
二.基础类型
1.声明变量
(1) var、let、const 都可以使用
//声明字符串
let str:string = '这是一个字符串'
//声明数字
let count:number = 3
let nan:number = NAN
let infinityNum:number = Infinity
//声明布尔值
let bool:boolean = true
let n:null = null
let u:undefined = undefined
//在非严格模式下 可以交叉赋值:n=a a=n
三.任意类型
- //any 任意类型
- //unknow 不知道的类型
- unknow 类型只能赋值给自身,或者any 类型
- 从上到下具有包含关系:
- top type 顶级类型 any、unknow
- Object
- Number、 String、Boolean
- number、string、boolean
- 1 'text' false
- never
unknow类型没有办法读其任何属性,不能调用其任何方法,如下是错误的
let testUnknow:unknow = {
name: '张三',
job:()=>{
}
}
//如下是获取不到的
testUnknow.name
testUnknow.job()
any可以是可以的
四.接口和对象类型
1.接口 interface
(1)一般用来定义对象
注:首字母大写、不能多属性不能少属性,要完全一样的属性
interface User = {
name: "张三"
}
let person:User = {
name: "张三"
}
(2)特点
遇到重名的会重合
interface User = {
name: "张三"
}
interface User = {
age: 18
}
//等价于
interface User = {
name: "张三",
age: 18
}
let person = {
name: "张三",
age: 18
}
利用索引签名可以自定义其他属性
//propName 是属性名,所以是字符串类型
//其值的类型不可以定义成string,否则上边的name、age 都会变成string,导致报错
interface User = {
name: string,
age: number,
[propName: string]:any
}
let person:User = {
name: "张三",
age: 18,
a:1,
b:false
}
定义可选值
//后端返回的age可有可无时,加一个问号?
interface User = {
name: string
age?: number
}
let person:User = {
name: "张三"
}
设置只读模式,不可以修改的属性 readonly
注:常用于后端返回的id,和定义一个函数
interface User = {
name: string
age?: number
readonly id: number
readonly cb:()=>boolean
}
let person:User = {
name: "张三",
id:1,
cb: ()=>false
}
//以下代码会报错
User.cb = ()=>true
定义函数类型(用的比较多)
//参数是name,必须是字符串类型,返回值必须是一个数字类型的数组
interface Fn = {
(name:string):number[]
}
const fn:Fn = function (name:string){
return [1,2]
}