一首歌的时间总结一下typescript

84 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8月更文挑战」的第1天,点击查看活动详情

前言

TypeScript是微软开发,并且开源的编程语言,通过在JavaScript的基础上添加静态类型定义构建而成。TypeScript通过TypeScript编译器或Babel转译为JavaScript代码,可运行在任何浏览器上

TypeScript和JavaScript的区别

  • ts 引入了"类"的概念
  • ts引入了模块的概念,可以把声明、数据、函数和类封装在模块中
  • ts增加了接口、泛型、类、类的多态、继承等
  • js没有重载概念,ts有可以重载
  • ts增加了 void/never/any/元组/枚举/以及一些高级类型
  • js是动态编程语言,边解释边执行;ts先编译再执行,可以在编译期间发现并纠正错误

TypeScript数据类型

  • any:可以赋予任意类型的值
  • number,string,boolean
  • array:数组类型(let arr1: number[] = [1, 2, 3] 或 let arr2: Array = [1, 2, 3])
  • tuple(元组)let a: [number, string] = [1, '2'](限制类型和数量)
  • object,function(参数类型:?可选参数。 = 默认参数。 ...剩余参数)
  • any,unknow(类似any,unknow只能赋值给unknow类型和any类型,unknow不允许定义的值有任何操作)
  • void,当一个函数,没有返回值时,ts会默认他的返回值为void类型
  • never,一个函数永远不存在返回值
  • enum(枚举)

接口和类型

interface(接口)和 type(类型别名)
相同:都可以给对象指定类型
不同:interface只能表示对象类型,type 能够表示非对象类型(基本类型,联合类型,元组类型)。
interface接口可以重复声明,ts会将它们合并。
interface侧重于描述数据结构,type侧重于描述类型。
扩展方式不同 interface 用 extends 来扩展,而type 用 & 操作符扩展

泛型
在定义函数、接口或类的时候,不预先指定具体的类型,使用的时候再指定类型的一种特性。
适用于:无论我们传什么类型,都能返回对应的类型

function hello <T> (val:T) : T { 
    return val 
}

这个T就是传递的类型

// 多类型传参
function hello <T,U> (a:T, b:U): {a:T, b:U} {
    const res: {a:T, b:U} = {a, b} 
    return res 
}

泛型的其他用途
定义接口,定义类,定义一个默认参数