ts是由微软的,是js 超集 。 和es6 的相同点是 都是语法糖 不能直接 在浏览器上用,需要转化

    yarn global add typescript

    如何编译那?tsc 文件名.ts

    java严谨 ,强类型,ts使js变成 强类型

    interface接口
    定义一个类
    interface Foo{
    name: string, 定义一个 name string类型
    } 可以用作 函数参数的 定义
    const foo = (x: Foo) => {
    console.log(x.name)
    }
    foo({name:”string”})

    class Person {
    //成员变量
    name: string
    //构造 函数
    constructor(name: string) {
    this.name = name
    }
    //成员函数
    eat(): void {
    console.log(this.name)
    }
    }
    const person: Person = new Person(‘sd’)
    console.log(person.name)

    //用来继承 接口 ,一般在 子类里定义了子类的 constructor,就会调用父类的 constructor 。所有的constructor都会 初始化一边 ,而且 在子类没有 constructor 的时候,他就会访问父类 的constructor ,但是父类的 constructor 需要穿参数 ,通过 子类的 super 里穿进去,不穿就访问不到

    1. super.方法名 () 在构造函数中 调父类的 方法

    class Fzz implements Foo {
    name:string // = ‘a’ 可以写 一个默认值
    age:number
    constructor(n:string){
    this.name = n
    }
    sayName(){
    console.log( this.name)
    }}

    const fzz= new Fzz(‘a’)
    fzz.sayName()

    数据类型
    string
    number
    boolean
    enum 枚举 就可以 enum a {1,2}就可以 console.log(a[0])取出来第一个
    any 类型 什么都可以
    数组类型 string[] 或者 Array
    也可以 [‘string’,’number’] // 第一个 是字符串。第二个是数字 类型

    :void 不要,函数的返回值 。

    可选属性 在 key 的后面加一个?

    只读属性 readonly key 名 。 不能更改 ,对数组来说是一个 新的 引用
    readonlyArray 这样就不能 改变数组的东西了,也不允许,把自己赋值给另一个。

    额外的 类型检查 as A .就是类似与 A。但是 不能去访问 那个多出来的值
    紧急逃离办法 , 换一个别的变量名,但是 还是拿不到值
    签名 [任意名字:string] : any 允许什么类型都可以

    函数

    索引类型
    interface C{
    [index:nuber] :string 表示我可以使用 下标做索引 。但是必须为 都是string
    }
    const c:C =[a,b,c]
    然后就可以使用 c[0] 拿到a

    如果是对象的话 [index.string]:string ,也可以在 []前 加readonly
    c[‘键名’]就可以 取值

    共有私有 与受保护的修饰符
    默认的 成员函数和成员变量 都是 public 可以在子类 和实例上都可以访问;
    protected 保护的 在自己的内部 和子类 里 访问,在 实例上访问 ,
    如果在constructor 上 写这个 。可以继承
    private 只能在自己的 函数内部访问 。如果在constructor 上 写这个 。自己都不能事例化,也不可以继承

    readonly 必须在申明的时候 或者 constructor 里 才可以赋初始值

    存取器
    get
    set
    在存取的时候 就会自动调用 get set
    把值当作计算属性用

    静态属性
    static 在类上挂载一个静态属性 , 实例不能访问静态属性 。 类自身可以

    抽象类
    表示 类非常抽象。
    不能被 事例化 只能被继承
    abstract 方法的话 在 抽象类里 没有实现的方法 叫抽象方法 。 在被继承后必须实现 抽象方法

    构造函数

    把类当成接口 使用

    泛型 可以给一个方法函数变量 ,加一个 类型的 工作
    类似于 一个 标记 。
    用的 较多的就是 泛型 类
    定义一个类 T 然后就可以在这类里用 泛型 T
    interface Props {
    name: string,

    }
    interface State {
    selectedTab: string,
    }

    export default class Home extends React.Component {}
    有了 泛型 才可以去 取到 state里的值