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的博客!