最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • [ts入门02]基本类型

    正文概述 掘金(mmxfree)   2021-07-30   682

    基础类型的分类

    分类

    • boolean:布尔值
    • number: 支持2/8/10/16进制
    • string:字符串
    • array:普通数组,有2种方式,string[]或者Array
    • tuple:元组,特殊数组,指定数组里的每个元素的类型,同时也确定了元素个数
    • any:不确定类型的变量
    • enum:枚举类型,可根据value找到key
    • void: 没有任何返回值的函
    • undefined/null:2种特殊类型
    • <>:非常确定的类型

    数组和元组的区别?

    数组:合并相同类型

    元组:合并不同类型的对象,函数编程语言常用

    void和undefined/null区别?

    • undefined 和 null 是所有类型的子类型。
    • undefined 可赋值给 number 类型变量
    • void 不能赋值给 number 类型的变量
    // 这样不会报错
    let num: number = undefined;
    //  这样会报错
    let u: void;
    let num: number = u;
    // Type 'void' is not assignable to type 'number'.
    

    boolean

    // boolean
    let isDone: boolean = true;
    let disabled: boolean = false;
    console.log(`isDone: ${isDone}`);   // isDone: true
    console.log(`disabled: ${disabled}`); //disabled: false
    

    number

    // number 
    // 十进制,十六进制,八进制,二进制
    let n1: number = 666;
    let n2: number = 0x0a;
    let n3: number = 0o17;
    let n4: number = 0b11;
    console.log(`n1: ${n1}`); // n1: 666
    console.log(`n2: ${n2}`); // n2: 10
    console.log(`n3: ${n3}`); // n3: 15
    console.log(`n4: ${n4}`); // n4: 3
    

    string

    // string
    // 支持模板字符串
    let myname: string = 'john';
    let myage: number = 18;
    let greeting: string = `i am ${myname} and i am ${myage} years old!`
    console.log(greeting); // i am john and i am 18 years old!
    

    array

    第2中方式:Array就是数组泛型(Array Generic)

    // 2种array定义方式
    let arr1: string[] = ['a','b'];
    let arr2: Array<number> = [1,2,3];
    
    console.log(arr1); // [ 'a', 'b' ]
    console.log(arr2); // [ 1, 2, 3 ]
    

    类数组是什么?

    比如 arguments 是类数组,不能用普通数组接收,

    应该用interface接收,比如:IArguments, NodeList, HTMLCollection 等

    比如 let args:IArguments = arguments

    tuple

    // tuple 元组
    // 特殊的数组 定义了类型和数目的数组(指定每个元素的类型)
    let tp1: [number, string] = [1,'abc'];
    let tp2: [number, string, string] = [1,'abc', ''];
    
    tp2[2] = 'x';
    // tp2[3] = 'y'; // tuple定义后,不能再新增元素
    
    console.log(tp1); // [ 1, 'abc' ]
    console.log(tp2); // [ 1, 'abc', 'x' ]
    

    tuple定义后,不能再新增元素,

    否则报错 y is not assignable to type

    enum

    使用方式:先定义枚举集合,划定常量范围

    枚举作用:可以通过下标反过来获取对应的key

    // enum
    // 可以全部默认赋值,部分手动赋值,全部手动赋值
    enum Color {Red = 2, Green = 1, Blue};
    
    let c1: Color = Color.Red; // c1=2
    let c2: Color = Color.Green;  // c2=1 
    let c3: Color = Color.Blue; // c3=2
    
    let cname1: string = Color[2];
    console.log(cname1); // 'Blue' 对应的是key
    

    any

    任意值: 不确定类型的变量

    变量声明未指定其类型

    • 会被识别为任意值类型
    • let a; 等价于 let a:any;

    使用场景:

    1. 不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。
    2. 调用不存在的方法时,编译时通过运行时报错
    // any 
    let notSure: any;
    
    notSure = 1;
    console.log(notSure); // 1
    
    notSure = 'abc';
    console.log(notSure); // 'abc'
    

    void

    void表示没有任何类型。 使用场景:函数没有返回值的情况

    // void
    function f1(): void{
        console.log('no return');
    }
    function f2(): string{
        return 'have return'
    }
    console.log(f1()); // void -> no return
    console.log(f2()); // have return
    

    undefined null

    // undefined null
    let empty1: undefined = undefined;
    let empty2: null = null;
    
    console.log(empty1); //  undefined
    console.log(empty2); //  null
    

    内置对象

    ts.xcatliu.com/basics/buil…

    • ECMAScript 的内置对象 Boolean、Error、Date、RegExp
    • DOM 和 BOM 的内置对象 Document、HTMLElement、Event、NodeList
    let body: HTMLElement = document.body;
    let allDiv: NodeList = document.querySelectorAll('div');
    document.addEventListener('click', function(e: MouseEvent){
        // do something
    })
    

    类型推论

    ts自动进行类型推论(类似自动类型转换)

    1. 变量定义时有赋值:根据[赋值]推测出[类型]
    2. 定义时没有赋值:被推断成 [any 类型]
    let  myName = 'Jim'; // 推断类型为string
    myName = 7; //error: type number 
    
    let  myName; // 推断类型为any
    myName = 'Jim'; //ok
    myName = 7; //ok
    

    联合类型

    简单例子:使用 | 分隔每个类型(可能多种类型)

    访问属性和方法:只能访问公共的属性或方法

    类型推论:如果有赋值,则会有类型推断

    类型别名

    语法: 关键字是type

    用途:常用于联合类型

    类型断言

    类型断言:表示程序员非常确认类型,可以实现类型自动转化

    语法:

    • <类型>值,比如str, counter

    • 值 as 类型 ,比如 str as string, counter as number

    // <>
    // 类型断言,
    let verysure: any = 'very sure type';
    let verysureLength: number = (<string>verysure).length;
    console.log(verysure); // very sure type
    console.log(verysureLength); // 14
    

    使用场合:非常确定是联合类型中的某一个

    注意:类型断言不是类型转换,断言成不存在的类型是不允许的

    字符串可选值

    用途:约束字符串类型,只能是某几个字符串中的一个

    语法:type 和 分隔符定义

    [ts入门02]基本类型

    泛型

    作用:[预先不指定]具体类型,[使用时指定]类型

    语法:

    1. 函数名后定义泛型参数,

    2. 函数入参和返回值使用泛型参数,

    3. 支持单泛型和多泛型

    注意:事先不知道泛型是哪种类型,所以不能随意的操作它的属性或方法

    个人理解:可以兼容不同类型,根据输入值来决定类型

    [ts入门02]基本类型

    声明合并

    是什么?

    如果定义两个相同名字的函数、接口或类 那么它们会合并成一个类型

    注意

    如果同名属性,则合并属性的类型必须是唯一的

    合并类型: 函数合并, 接口合并, 类合并

    [ts入门02]基本类型


    起源地下载网 » [ts入门02]基本类型

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元