zoukankan      html  css  js  c++  java
  • typescirpt 知识点

    基础类型

    常见类型

    就是变量类型声明,和.NET,C#等面向对象语言一样,int类型 double float类型,float,比如数据库中的name: varchar(80)一样,ts也提供了很好的支持,比如字段、属性、方法,哈哈说远了 ,在定义字段的时候会用到变量类型声明,ts同理。

    let age: number = 8;
    let name: string = '张三';
    let favorite: string[] = ['踢足球','唱歌','跳舞',...] or favorite: Array<string> = ['玩游戏',...]
    // string[] 是 Array<string>的简写方式,类似的Array<number> 等同于 number[]                                                                       
    

    元组tuple

    定义一组已知不同类型的数组,比较绕口,直接上代码,我现在用一个元组表示你的年龄,姓名,性别,成绩。

    let MathGrade:[number,string,string,number] = [18,'李四','男',98]
    

    现在我假定有一个成绩表,李四的成绩就是MathGrade[3]就可以直接拿到成绩了,是不是很方便

    总结:元组比数组更强大,印象中的js都是好像只能够存放同一类型的数组,没有尝试过其他的

    枚举类型enum

    类似提前声明一组数据,这组数据中包含映射的默认值,这个东西和接口interface类似,但是这个有值,interface声明的内容一般只有类型和返回类型。

    元组类型中,默认下标index是走0开始的,你可以不给赋值,默认是0往后累加,但是和下标不一样,这个下边还是走0开始的,是因为我主动给赋值了,才red变成1的。创建的c结果就是3,按照正常默认情况结果就是2~

    enum Color { red = 1, green = 2, blue = 3 }
    let c: Color = Color.blue;
    console.log(c) //3
    console.log(Color[2]) //3
    

    any 类型

    任意类型,在你定义一个变量不知道具体类型的时候就可以用到any,可能在后边会动态复赋值。比如你在开始的时候就定义了一个

    const grade:any; 因为我也不知道这是个什么类型,在后边会完善它。就可以使用any,在定义函数的时候也是一样的。当然所有变量、函数、泛型都可以使用any,但是这样你使用typescript的意义在哪里呢

    const grade:any;
    grade= {
      name: '李四',
      age: 28
    }
    

    void 无返回值类型

    无返回值类型,一般常见于面向对象语言定义函数的时候声明public static void setName(index){ // dosomething }。es是没有的,但是我们typescript给我们提供了,是不是很方便

    const readIndex = (index):void =>{ console.log(index) }
    

    声明一个void的变量没有任何意义,大哥规定你你只能赋值两个,undefined,null

    const b:void = undefined 
    const c:void = null 
    

    null 和 undefined

    在typescript中nullundefined变量是可以单独声明的,但是他们本身的用处并没有想象中那么大,但是可以直接复制给其他string或者number值类型的变量,这将变的非常有效

    const b: string = null 
    const a: number = undefined
    

    nerver类型

    对于永远不存在的类型的第一个定义,比如定义一个函数报错之后会返回什么,当然这种情况不会发生

    // 返回never的函数必须存在无法达到的终点
    function error(msg: string){
      throw new Error(message);
    }
    // 推断的返回值类型为never
    function fail() {
        return error("Something failed");
    }
    
    // 返回never的函数必须存在无法达到的终点
    function infiniteLoop(): never {
        while (true) {
        }
    }
    

    Object 类型

    object表示非原始类型,也就是除numberstringbooleansymbolnullundefined之外的类型。简单来讲object是引用类型不是值类型。

    declare function setInfo(info: Object | null):void {}
    // 只有在传入对象类型和null类型的时候才不会报错
    setInfo({name:'李四'}) //ok
    setInfo(null) // ok
    setInfo(1) // error
    setInfo('李四') // error
    setInfo(undefined) // error
    setInfo(false) // error
    

    类型断言

    在某些时候你会比ts更加了解你定义的这个变量是什么类型的值,
    类型断言有两种形式。 其一是“尖括号”语法:

    let someValue: any = "this is a string";
    let strLength: number = (<string>someValue).length;
    

    另一个为as语法:

    let someValue: any = "this is a string";
    let strLength: number = (someValue as string).length;
    

    两种形式是等价的。 至于使用哪个大多数情况下是凭个人喜好;然而,当你在TypeScript里使用JSX时,只有 as语法断言是被允许的。

  • 相关阅读:
    Tree Recovery解题报告
    bjtuOJ1019 Robot
    bjtuOJ1137 蚂蚁爬杆
    栈的使用,rails
    重做catch the cow
    C#3.0新特性之匿名类型
    C#Lambda表达式的用法
    C#进程的使用方法详解
    C#进程管理启动和停止
    C#LINQ查询表达式用法
  • 原文地址:https://www.cnblogs.com/HondryTravis/p/11138186.html
Copyright © 2011-2022 走看看