typescript

类型

var myname: string = "cxk"; // 字符串
var alias: any = 1 // 可以是任何类型
var age: number = 13 // 数字类型
var gender: boolean = true // 布尔

function test(name: string): void { } // 函数参数以及函数返回值

// 自定义类型
class Person {
    name: string
    age: number
}
// 创建对象
var cxk = new Person()
cxk.name = "cxk"
cxk.age = 18

参数

function test(a: string = "default") { }
// 调用函数test时,可不传递b
function test(a: string,b?: string) { }
function test(...args) { }

函数

function* test() { 
    console.log("start");
    yield;
    console.log("finish");
}
var f1 = test();
f1.next();//输出start
f1.next(); // 输出 finish
function test() {
    return {
        pname: 'cxk',
        age: 18
    }
}
const {pname,age} = test()

安全链式调用

return person?.name?.firstName; // 等价于 person && person.name && person.name.firstName
person.name!; // 强制name属性不为空
name? :string; // 可选属性

for

for (let n of arr) {
    // 可以用在数组、字符串、对象
}

面向对象

class Person {
    name;
    run() {
        
    }
}
const p1 = new Person()
p1.name = "cxk1"
const p2 = new Person()
p2.name="cxk2"

权限控制

private run() {
        
}

泛型

const list: Array<String> = []
list[0]="1" // 只能存放string

接口

interface Runnable {
    run();
}
class Thread implements Runnable {
    run () {}
}

模块

export var prop1;

export function data () {
  console.log('data')
}

export class Thread{
  run():void{
    console.log('run')
  }
}
import {data} from './module1'
data()