Web前端之路让前端飞Web 前端开发

vue源码阅读 -- Typescript写法

2017-10-23  本文已影响488人  一二三kkxx

前言

vue源码看了有一段时间了,由于偷懒,一直没有做记录,今天重看,发现很多知识点有些遗忘,果然懒还是不能偷的...

vue源码中用了Typescript的写法,当初看的时候,一脸懵,这里先大致记录下Typescript的基础写法.

笔记记录出处 阮一峰老师

原始数据类型

定义好是什么类型的数据后,不可以改变数据类型,否则会报错.

任意值Any

任意值用来表示允许赋值为任意类型.

类型推论

如果没有明确指定类型,那么Typescript会按照类型推论推测出一个类型.

联合类型

联合类型表示可以取多种类型中的一种,类似我们平时的或

对象类型 -- 接口

在TS中,我们使用接口(Interfaces)来定义对象的类型.

变量的形式必须和接口的形式保持一致,不可以增加,也不可以减少

有时候我们希望对象中一些字段智能在创建的时候被赋值,可以用readonly定义只读属性.

只读属性存在于第一次给对象赋值的时候,而不是第一次给只读属性赋值的时候.

    interface Person{
        readonly id: number;
        name: string;
        age?: number;
        [prop:string] : any;
    }
    let siva : Person={
        id:222,
        name:siva,
        age:7,
        hobby:'sing'
    }
    siva.id  = 2333;
    //编译错误;因为id是只读属性.
    let alex : Person={
        name:alex,
        age:7
    }
    siva.id  = 3333;
    //编译错误 只读属性值只存在于第一次给对象赋值的时候

数组类型

数组类型的定义方式有多种

函数类型

当多个函数定义有包含关系的时候们需要优先把精确的定义写在前面.

    function reverse(x: number): number;
    function reverse(x: string): string;
    function reverse(x: number | string): number | string {
      if (typeof x === 'number') {
        return Number(x.toString().split('').reverse().join(''));
      } else if (typeof x === 'string') {
        return x.split('').reverse().join('');
      }
    }

类型断言

上一篇 下一篇

猜你喜欢

热点阅读