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

    正文概述 掘金(crazy基仔)   2020-12-29   608

    1. 概念预览

    • 基础类型: 布尔值,数字,字符串,数组,元组,枚举,any,void,null,undefined,never,object.
    • 类型断言: 有时候,我们比typescript本身更了解某些值的详细信息,我们可以通过断言去标注它,告知编译器,我知道我在干什么.但是,不会进行特殊的数据检查和解构.
    • 变量声明: letconst

    2. 代码展示

    2.1 基本类型

    • 布尔值
     let isDone: boolean = false;
    
    • 数字
     let decLiteral: number = 6;
     let hexLiteral: number = 0xf00d;
     // [ˈbaɪnəri]
     let binaryLiteral: nubmer = 0b1010;
     let octalLiteral: number = 0o744;
    
    • 字符串
    let name: stirng = "bob";
    name = "smith"
    /* 模板字符串没定义多行文本和内嵌表达式,使用反引号, 换行相当于\n\n*/
    
    • 数组
    /* 单一元素类型 */
    let list: number[] = [1,2,3];
    /* 数组泛型 */
    let list: Array<number> = [1,2,3];
    
    • 元组
    /*tuple*/
    /* 元组类型允许表示一个一直元素数量和类型的数组 */
    /* Declare [dɪˈkleə(r)] a tuple [tjuple] type */
    let x: [string,number];
    x = ["hello",10];
    x = [10,"hello"];
    /* 当访问一个越界元素的时候,会使用联合类型替代 */
    x[3] = "world"; // ok,字符串可以复制给(string | number) 类型
    
    • 枚举
    /* enum 类型是对javaScript标准数据的一个补充,C#等其他语言一样枚举类型可以为一组数值赋予更友好的名字 */
    /* 默认情况下从0开始为元素编号 */
    enum Color {Red,Green,Blue}
    let c: Color = Color.Green;
    
    /* 我们将Red改成1将会从1开始编号 */
    enum Color {Red = 1, Green, Blue}
    let c: Color = Color.Green;
    
    /* 全部改成手动赋值 */
    enum Color {Red = 1, Green = 2, Blue = 4}
    let c: Color = Color.Green;
    
    /* 我们知道值是2,但是不知道映射名字怎么办 */
    enum Color {Red = 1, Green = 2, Blue = 4}
    let colorName: string = Color[2]; // 'Green'
    
    • any
    let notSure: any = 4;
    notSure = "maybe a string instead";
    notSure = false; // okay,definely a boolean
    
    let notSure: any = 4;
    notSure.ifItExists(); // okay, ifItExists might exist at runtime
    notSure.toFixed(); // okay, toFixed exists (but the compiler doesn't check)
    
    let prettySure: Object = 4;
    prettySure.toFixed(); // Error: Property 'toFixed' doesn't exist on type 'Object'.
    
    // 当你知道一部分数据的类型时,any类型也是有用的。
    let list: any[] = [1,true,"free"];
    list[1] = 100
    
    • void
    // 从某种程度上来说, void类型像是与any相反,表示没有任何类型.
    // 当一个函数没有返回值类型时使用 void
    function warnUser(): void {
        console.log("This is my warning message");
    }
    
    // 生命一个void类型的变量没有什么大用,因为你只能赋予它 undefined 和 null
    let unusable: void = undefined;
    
    • null
    // Not much else we can assign to these variables!
    let n: null = null;
    
    • undefined
    let u: undefined = undefined;
    // void 和 (undefined | null) 有什么区别
    // null 和undefined 是所有类的子类型.
    // 就是说你可以把null 和undefined 复制给number类型的变量
    
    // 然而,当你指定了--strictNullChecks标记,
    // null 和 undefined 之鞥呢复制给 void 和它们各自.
    // 这样就避免了很多常见问题.
    // 也许在某处你想传入一个string 或 null 或 undefined,
    // 你可以使用联合类型 string | null | undefined
    
    // 我们管理尽可能使用 --strictNullChecks,在本手册里我们假设这个标记是关闭的.
    
    • never
    // never 类型表示的是那些永远不存在的值的类型.
    // never类型是那些总是抛出异常或根本就不会返回值的函数表达式或箭头函数表达式的返回值类型;
    // 变量也可能是never,当它们被永不为真的类型保护所约束时;
    
    // 返回never的函数必须存在无法到达的终点
    function error(message: string):never {
        throw new Error(message);
    }
    
    // 推断的返回值类型为never
    function fail() {
        return error("Something failed");
    }
    
    // 返回never的函数必须存在无法到达的终点
    function infiniteLoop():never {
        while (true) {
    
        }
    }
    
    • Object

    object就是非原始类型,也就是除了number,string,boolean,symbol,null或undefined之外的类型 使用object类型,就可以更好的表示像Object.create这样的API.例如

    declare function create(o:object| null):void;
    create({prop:0}); // OK
    create(null); // OK
    create(42); // Error
    create("string") // Error
    create(false) // Error
    create(undefined) // Erroir
    

    2.2 类型推断

    • 断言的形式有两种
    /* 尖括号语法 */
    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;
    

    2.3 变量声明

    var a = 10;
    // const是对let的一个增强,它能阻止对一个变量再次赋值
    
    // 并且捕获变量怪异之处
    function f(shouldInitialize: boolean) {
        if (shouldInitialize) {
            var x = 10;
        }
    
        return x;
    }
    
    f(true);  // returns '10'
    f(false); // returns 'undefined'
    
    for (var i = 0; i < 10; i++) {
        setTimeout(function() { console.log(i); }, 100 * i);
    }
    
    // 当然也可以用立即执行函数来解决
    
    // let 变量它使用的是词法作用域和块作用域
    // 块作用域边浪在包含它的块或for循环之外是不能访问的
    

    起源地下载网 » TypeScript基础类型

    常见问题FAQ

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

    发表评论

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

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

    联系作者

    请选择支付方式

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