跳至主要內容

TypeScript

Entity大约 2 分钟

TypeScript

安装

    // start 
    // 安装ts
    npm install -g typescript
    // 编译
    tsc 文件.ts

类型 type

    function test(val:string){
    return val;
    }
    let a = "auto type";
    var b : string = "string type";
    let c : any = "any type";

    // 数组
    let arr1:string[] = ["1","2","3"];
    let arr2:Array<Number> =  [1,2,3];

    // 元组 Tuple , 可以指定不同的类型
    let tuple : [string,number] = ["123",123];

    // 枚举 enum
    enum Color{
        red,
        pink,
        black = 5,
        green,
        yellow = 89,
        blue
    }

    let color : Color = Color.red;

    // 空值
    function result_void():void{
        // 返回值为空
        return;
    }

    // 类型推断
    let someValue : any = "this is a string";
    let strLength : number = (<string>someValue).length;
    // or
    let strLength2 : number = (someValue as string).length;

    // 使用 let 代替 var (var的作用域很复杂 所以尽量使用let)

    // const 常量 ,赋值以后不能再被改变
    // 任何不更改值的变量都应该使用const

解构数组

// 解构
let [a , b] = [1,2];
// 参数当解构
function tuple([first , last]:[number , string]){
    console.log(first , last); // 123 123
    return [first , last];
}
// 只取想要的数据,忽略
let [data1] = [1,2,3,4,5];
// 留空则忽略不想要的数据
let [,data2] = [1,2,3,4,5];
// 使用展开语法
let [...data3] = [1,2,3,4]

console.log(a,b);
console.log(tuple([123,"123"]));    // [ 123, '123' ]
console.log(data1); // 1
console.log(data3); // [ 1, 2, 3, 4 ]

解构对象

// 解构对象
let obj = {
    a : 'a',
    b : 'b',
    c : 123
};

let {a,b,c} = obj;

console.log(a,b,c);
// 解构yi需要用括号括起来
({a,b} = {a:'aaa',b:"bbb"})

console.log(a,b); // aaa bbb

let o = {
    aa: "foo",
    b: 12,
    c: "bar"
};
// 使用展开语法收纳多余的属性
let { aa, ...passthrough } = o;
console.log(aa,passthrough); // output foo { b: 12, c: 'bar' }

// 给属性不同的名字, 展开语法不能有别名
// 这里冒号后面的不是类型而是别名
let {aa : test,...pass} = o;
console.log(test,pass); // output foo { b: 12, c: 'bar' }

别名

// byName = 别名
let {a : byName} = {a : '123'};

解构与默认值

// 默认值
let {a , b = 1000} = {a : '123'};

// 函数声明
type C = {a:string,b? : number};
function func({a , b} : C):void{
    // ....
}
// 指定默认值
function funcTwo({a , b} = {a:'',b:0}){
    // ....
}
funcTwo(); // ok,default to {a:'',b:0};


console.log(a,b);