zoukankan      html  css  js  c++  java
  • TS2

    //还要注意的是,在构造函数的参数上使用public等同于创建了同名的成员变量。
    class Student {
        fullName: string;
        constructor(public firstName, public middleInitial, public lastName) {  //4个成员变量
            this.fullName = firstName + " " + middleInitial + " " + lastName;
        }
    }
    interface p{
        firstName:string;
        middleName:string;
        lastName:string;
        fullName:string;
    }
    function a(s:p){
        return "aa" + s.firstName + s.middleName + s.lastName + s.fullName;
    }
    var s = new Student('fff','mmm','lll');
    console.log(a(s));
    
    -------------------------------------------------------------------------------------------
    元组类型:
    var x: [string, number]  = ['hello', 10]; 
    var x = ["sss",222];
    
    var x : string|HTMLElement;
    
    class Dog {woof(){}}
    class Cat {meow(){}}
    var pet: Dog|Cat;
    -------------------------------------------------------
    联合类型;
    interface  p{
        name:string;
        age:string | string[] | ( ()=>string );
    }
    var p1 : p = {name:"sss",age:["sdss","dee"]};
    console.log(p1.name + p1.age);
    --------------------------------------------------------
    联合类型|泛型
    function cc<T>(x:T,y:T):T{  //申明时不指定参数类型
        return Math.random() > 0.5 ? x : y;
    }
    console.log( cc<string>('1','3') );  //调用的时候确定参数类型
    console.log( cc<string|numnber>(1,'3') );
    
    function ss<T,M>(x:T,y:M):T|M {
        return Math.random() > 0.5 ? x : y;
    }
    console.log( ss<string,number>("www",22) );
    ---------------------------------------------------------
    模版字符串:
    var name = "TypeScript";
    var greeting  = `Hello, ${name}! Your name has ${name.length} characters`;
    当编译目标为ES6之前的版本时,这个字符串被分解为:
    var name = "TypeScript!";
    var greeting = "Hello, " + name + "! Your name has " + name.length + " characters";
    ---------------------------------------------------------
    类型别名:
    type PrimitiveArray = Array<string|number|boolean>;
    type MyNumber = number;
    type NgScope = ng.IScope;
    type Callback = () => void;
    ----------------------------------------------------------
    const enum(完全嵌入的枚举)
    const enum Suit { Clubs, Diamonds, Hearts, Spades }
    var d = Suit.Diamonds;
    
    Compiles to exactly:  var d = 1;
    ----------------------------------------------------------
    解构声明会引入一个或多个命名变量, 并且初始化它们的值为对象的属性或者数组的元素对应的值.
    比如说, 下面的例子声明了变量 x, y 和 z, 并且分别将它们的值初始化为 getSomeObject().x, getSomeObject().x 和 getSomeObject().z;
    var { x, y, z } = getSomeObject();
    
    交换2个值 
    var x = 1;
    var y = 2;
    [x, y] = [y, x];
    --------------------------------------------------------
    never类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。 即使 any也不可以赋值给never。
    // 返回never的函数必须存在无法达到的终点
    function error(message: string): never {
        throw new Error(message);
    }
    ----------------------------------------------------------
    类型断言好比其它语言里的类型转换,
    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;
    ----------------------------------------------------------------
    函数参数也使用函数作用域。
    解构:
    数组的解构赋值:
    let input = [1, 2];
    let [first, second] = input;
    console.log(first); // outputs 1
    console.log(second); // outputs 2
    
    // swap variables
    [first, second] = [second, first];
    ---------------------------------------
    function f([x,y]:[number,number]){
        console.log(x);
        console.log(y);
    }
    let i:[number,number] = [3,4];
    f(i);
    -----------------------------------------------------------------
  • 相关阅读:
    IO流2 --- File类的常用方法1 --- 技术搬运工(尚硅谷)
    IO流1 --- File类的实例化 --- 技术搬运工(尚硅谷)
    luoguP6136 【模板】普通平衡树(数据加强版)
    CF981E Addition on Segments 线段树分治+bitset
    LOJ#2538. 「PKUWC2018」Slay the Spire DP+组合
    LOJ#2537. 「PKUWC2018」Minimax 线段树合并
    luoguP4220 [WC2018]通道 随机化
    学习笔记2018/6/22
    git push解决办法: ! [remote rejected] master -> master (pre-receive hook declined)
    IDEA错误:Cannot start compilation: the output path is not specified for module "Test". Specify the out
  • 原文地址:https://www.cnblogs.com/yaowen/p/7217609.html
Copyright © 2011-2022 走看看