ts的深入浅出

官方描述:TypeScript 是由 Microsoft 开发的一种开放源代码语言。 它是 JavaScript 的一个超集,这意味着你可以使用已开发的 JavaScript 技能,以及以前不可用的某些功能。

ts VS js

TypeScript JavaScript
JavaScript 的超集,用于解决大型项目的代码复杂性 一种脚本语言,用于创建动态网页。
强类型,支持静态和动态类型 动态弱类型语言
可以在编译期间发现并纠正错误 只能在运行时发现错误
不允许改变变量的数据类型 变量可以被赋予不同类型的值

ts类型

一、ts保留了js的全部基础类型,共八种number、string 、boolean、 null、undefind、symbol

例子:

const num: number = 0

const str: string = '0'

const flag: boolean = true

const nul: null = null

const ude: undefind

const sym: synbol = Symbol(0)

二、元组(tuple)

概念:就是规定了一个元素数量和类型的数组,每一个类型的种类可互不相同

例子: 

const tuple: [number, string, boolean[]] = [0, '1', [true]]

三、枚举(enum)

例子:

enum lizi {

        a=1,

        b=2,

}

lizi.a即可拿到1这个枚举值

四、任意类型(any)

概念:是泛型,任何类型的值都可以赋予给被定义了any类型的变量,不建议这样使用,定义为any和js的无类型并无区别,只是套了ts的外壳

例子:

const renyi: any = 0

五、void

概念:代表没有类型,一般用于没有返回值的函数

例子:

function voidFn(): void {

        console('没有返回类型')

}

function objFn(): object {

        console('返回类型为对象')

        return {a: 0, b: 9}

}

六、never

概念: never是任何类型的子类型,也就是说任何类型都可以赋值给never

例子:

function a(): never {
  throw new Error('error');
}

TS类、接口、泛型

一、类

例子:

class lei {

        public name: string        // 公共属性

        protected age: number        // 可以在子类中访问,不能在实例中访问

        private sex: string        // 私有属性,只能在类的内部访问,外部访问会报错

        rendonly favor: string        // 只读属性

        constructor(name: string, age: number, sex: string, favor: string) {

                this.name = '黎明'

                this.age = 18

                this.sex = '女'

                this.favor = '踢足球'

        }

}

二、接口

interface 定义类型

type 定义类型

异同点

1. 这两个都可以进行扩展,interface是通过继承extends来扩展的。type是通过&来扩展的

2. interface可以合并类型,比如定义两个相同的People, interface可以进行合并,type会报错,不允许修改

三、泛型

概念: 泛型可以让我们创建一个可以在多种类型上工作的组件,她能够支持当前的数据类型,同时也能支持未来的数据类型,可以大大提升组件的可重用性

例子:

1. 基本泛型

function fanxing (params: T) {

        console.log('---------基本泛型‘)

}

2. 继承某一个类型定义的泛型

interface famxing {        // 这样可以确保该泛型中必包含length属性

        length: number

function fanxing (params: T) {

        console.log('---------继承某一个类型定义的泛型‘)

}

as(类型断言)

概念: 是把一个相对普遍的类型,转成一个相对具体点的类型

例如:
const el =document.getElementById("jiang") as HTMLImageElement
el.src="url地址"

你可能感兴趣的:(typescript)