目录

  • 隐式类型推断
  • 类型断言

    • 办法一:as 关键词
    • 办法二:尖括号断言
  • 类型申明(declare)

    • 申明步骤
    • 应用第三方库lodash
    • 应用第三方库query-string
  • TypeScript学习地图

之前讲语法,感觉这些既属于语法,然而不是非凡的类型,一时间不晓得怎么分类,所以就做为类型补充常识。

隐式类型推断

隐式类型推断 : 如果咱们没有明确通过类型注解去标注这个变量的类型,那么TypeScript依据一些能够推断出这个类型。

上面这个例子:

如果咱们没有设定类型,赋值了一个数字,那么会推断这个为number类型,之后再赋值为字符串,就会报类型谬误。

如果TypeScript无奈推断这个变量的类型,就会定为any,前面赋值什么类型都能够。

开发的时候还是倡议大家为每个变量增加明确的类型,为了前期更直观的了解代码。

类型断言

TypeScript有时无奈推断进去一些变量的类型,然而咱们能够明确晓得,所以有些时候它给了咱们一些不确定选项的时候咱们能够断言成确定的类型。应用类型断言就能够辅助ts更加明确每个变量的类型。

TypeScript类型断言不是类型转换,类型转换是在运行阶段,断言是在编译阶段,编译过后断言就不存在了。

举个例子:

const nums = [110, 120, 119, 112]// 上面返回的 res ,ts认为可能是number,也可能是undefinedconst res = nums.find(i => i > 0)// 如果上面要对res进行运算,res间接运算就会报错const square = res * res // 报错,就要断言它为number类型才行

办法一:as 关键词

应用as就能够明确num1是一个数字,上面就能够应用数字运算

const num1 = res as number

办法二:尖括号断言

这个尖括号和jsx的标签产生抵触,那种状况不举荐应用

const num2 = <number>res

类型申明(declare)

开发过程中咱们会用到第三方模块,这些模块并不都是用typeScript编写的,所以它的成员可能就没有强类型体验。

申明步骤

  1. 如果有typescript匹配的类型申明,能够间接应用
  2. 如果没有就只能手动进行类型申明(declare
  3. 能够在社区中有能够间接npm下载对的类型申明模块,装置应用

存在的起因是为了兼容一般的js模块.

应用第三方库lodash

应用lodash举例子,lodash自身没有集成类型申明,所以应用的时候会报错。咱们能够本人手动进行类型申明

上面的函数,间接调用camelCase没有类型提醒,所以在后面增加declare对函数camelCase进行参数和返回值的限度,这样能够看到这个函数有了类型的提醒

那下面的lodash还是报错,那么咱们看可能须要下一些货色进行兼容,因为TS社区比拟弱小,大部分的第三方模块都有对应的类型申明,间接装置其对应的类型申明模块(个别是@types/模块名)即可.

类型申明是开发依赖,外面不会提供任何的代码,只是对模块做对应的类型申明

装置

# yarnyarn add @types/lodash --dev# npmnpm i @types/lodash 

装置之后lodash可看到外面有很多.d.ts的类型申明文件,对应的代码中就有对应的类型申明提醒了

应用第三方库query-string

query-string —— 解析query中的url字符串

自身包外面集成了类型申明文件,不须要额定再装置。

# yarnyarn add query-string# npmnpm i query-string

应用的时候看到有类型申明的介绍

TypeScript学习地图