美文网首页美文共赏
TypeScript-02-类型

TypeScript-02-类型

作者: JerrySi | 来源:发表于2021-12-14 00:03 被阅读0次

    1.六种类型

    // ts非严格模式下, 类型都可以为null
    
    const a: string = 'string'
    
    // Infinity无穷大
    const b: number = Infinity //NaN //123
    
    const c: boolean = true
    
    const d: null = null
    
    const e: void = undefined
    
    // 因为Symbol是es6, tsconfig使用的是es5
    // 可以通过修改tsconfig.json里面lib标准库配置调整
    const f: symbol = Symbol()
    

    2.对象

    // object 可以对象、数组、函数
    const foo: object = function(){} //[] //{}
    
    const foo1: {} = {foo: '1', value: '2', value1: 1}
    
    const foo3: {foo: number, value: number} = {foo: 1, value: 2}
    

    3.数组

    const arr: Array<number> = [1, 2, 3]
    const arr1: number[] = [1, 2, 3]
    

    4.元组

    const tuple: [number, string] = [1, '']
    const name = tuple[0]
    const age = tuple[1]
    
    const [name1, age1] = tuple
    

    5.枚举

    // 默认0开始
    // 如果设置了一个值,后面值从这个数字累计
    // 不加const,会生成一个双向键值对象
    const enum Type {
        Type1 = 6,
        Type2,
        Type3,
    }
    
    enum StringType {
        Type1 = 'Type1',
        Type2 = 'Type2',
        Type3 = 'Type3',
    }
    

    6.函数

    function sum(a: number, b?: number, ...args: number[]):number {
        return 10
    }
    sum(1)
    sum(1,2)
    sum(1,2,3)
    
    const a: (a: number, b?: number | undefined, ...args: number[]) => number = function sum(a: number, b?: number, ...args: number[]):number {
        return 10
    }
    

    7.any

    function stringify(value: any):string {
        return JSON.stringify(value)
    }
    

    8.推断

    let a = 23
    //a = ''
    
    let b: any = 23
    b = ''
    
    let c
    c = ''
    c = 123
    

    9.断言

    const a = [1,2,3,4]
    const r = a.find( i => i > 0)
    
    // 断言
    const result: number = r as number
    
    // JSX下面会冲突,不能使用
    const result1: number = <number>r  
    

    10.接口

    // 接口用于对对象进行限制
    // 接口属性可以分号分割
    // ?可选
    // readonly只读
    // [propName: string]支持key为string的数组
    interface UserInfo {
        name: string
        age: number
        alias?: string
        readonly sex: string
    } 
    
    function foo(info: UserInfo) {
        console.log(info.age + info.name + info.sex + info.alias)
    }
    
    const userInfo: UserInfo = {
        name:'', 
        age:213,
        sex:'man',
    }
    userInfo.name = ''
    
    // userInfo.sex = ''
    
    foo(userInfo)
    
    
    interface Cache {
        [friends: string]: string
    } 
    const cache: Cache = {
    }
    cache.a = ''
    cache.b = ''
    cache.c = ''
    

    11.类

    class Person {
        // ts中的成员属性,必须声明
        // 如果声明没有初始化,那么必须在构造函数中初始化
    
        // public:默认 外部可以使用
        // protected: 外部不能访问, 可继承, 而且可以一直继承下去
        // private: 外部不能访问, 不可继承
    
        // constructor添加了private, 可以通过静态方法强制使用者调用
    
        private name: string
        public age: number
        protected readonly gender: boolean = true
    
        constructor(name: string, age: number){
            this.name = name
            this.age = age
            this.gender = false
        }
    
        print():void {
            console.log(`I am ${this.name}`)
        }
    }
    

    12.类实现接口

    interface Eat {
        eat(food: string):void
    }
    interface Run {
        run(distance: string):void
    }
    
    // 抽象类和抽象方法(和Android一样)
    abstract class Animal implements Eat, Run {
        eat(food: string):void {
    
        }
        run(distance: string):void {
    
        }
        abstract jump(high: string): void
    }
    

    13.定义类型

    import { camelCase } from 'lodash'
    
    declare function camelCase(input: string) : string
    
    const rse = camelCase('hello haha')
    
    

    ts中类型声明的文件, 文件名格式:文件名.d.ts

    相关文章

      网友评论

        本文标题:TypeScript-02-类型

        本文链接:https://www.haomeiwen.com/subject/yhrdfrtx.html