TS变量,枚举,接口
变量
跟JS一样
let a:string = 's'
let b:number = 1
let c:boolean = true
let d:object = {}
let e:null = null
let f:undefined = undefined
//any(任何类型)
let any1:any = 1
let any2:any = 'b'
any1 = {}
any2 = true
枚举
- 不赋值
`
bash
enum Gender {
}Man, Woman
let gender: Gender = Gender.Woman
console.log(gender) //1
gender = Gender.Man
console.log(gender) //0
2. 赋值
``` bash
enum Gender {
Man = 'Man',
Woman = 'Woman'
}
let gender: Gender = Gender.Woman
console.log(gender) //Woman
gender = Gender.Man
console.log(gender) //Man
void
函数没有返回值
function test():void{
console.log(1)
}
let a:number = test() //会报错
never
默认情况下null和undefined是所有类型的子类型.例如,null可以赋值给number类型的变量.
type A = string & number
//报错never
接口
描述一个对象必须有什么属性(方法)
interface Shape {
head: string,
body: string
}
interface Human {
name: string
age: number,
shape: Shape,
say(word: string): void
}
let tom: Human = {
name: 'tom',
age: 28,
shape: {
head: '头',
body: '身体'
},
say(word: string) {
console.log(word)
}
}
tom.say('hello')
- readonly
只读
interface Human {
readonly name: string
age: number
- 可选属性
interface Human {
readonly name: string
age: number,
like?:Array<string>
- 假如额外传入参数
interface Config {
color?: string,
width?: number
}
function created(config: Config): void {
console.log(config)
}
created({
age: 'red'
})
//会报错
要使用字符串索引签名
interface Config {
color?: string,
width?: number,
[key: string]: any //添加这一行,意思是key为字符串类型,value为any类型,key
}
function created(config: Config): void {
console.log(config)
}
created({
age: 'red'
})
- 使用接口描述一个函数
注意,接口定义参数名只是一个顺序,跟实际函数变量名没有关系
interface Operation {
(number1: number, number2: number): number
}
let add: Operation = function (n1: number, n2: number): number {
return n1 + n2
}
let result: number = add(1, 2)
console.log(result)
- 接口继承
interface Animal {
move(): void
}
interface Human extends Animal {
name: string
age: number
}
let tom: Human = {
age: 18,
name: 'tom',
move() {
console.log('move')
}
}
tom.move()
一个接口可以继承多个接口
interface Animal {
move(): void
}
interface 有机物 {
c: true
h: true
o: true
}
interface Human extends Animal, 有机物 {
name: string
age: number
}
let tom: Human = {
c: true,
h: true,
o: true,
age: 18,
name: 'tom',
move() {
console.log('move')
}
}
版权声明:本博客所有文章除特殊声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明出处 Roxas Deng的博客!