TypeScript自学课(6)-any

在上文中,我们使用了TSC编译TS,接触到了第一个数据类型number.

在TS中提供了 以下基本类型:

  • 布尔类型(boolean)
  • 数据类型(number)
  • 字符串类型(string)
  • 数组类型(array)
  • 元组类型(tuple)
  • 枚举类型(enum)
  • 任意值类型(any)
  • null 和 undefined
  • void 类型
  • never 类型

其中元组、枚举、任意any、void类型和 never类型是TypeScript特有的!

在上文中,我们知道在TS中,我们使用:类型给变量添加类型注释。

let userName: string = "搞前端的半夏"

let age: number = 18 

当我们定义一个变量时,并不指定类型,也不赋初始值。那么变量默认就是any类型。

let userName;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IJmRWlzI-1655361794711)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/567805c5c7f04658b275c2e99682f6d3~tplv-k3u1fbpfcp-zoom-in-crop-mark:1956:0:0:0.image)]

如果我们不指定类型,但是赋值,TS就会进行类型推断

let userName = "搞前端的半夏"

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ws4NA2Z2-1655361794712)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a4ce02e57b164bbe97edc03277586855~tplv-k3u1fbpfcp-zoom-in-crop-mark:1956:0:0:0.image)]

any可以是任何东西,任何东西也可以是any。它是顶级类型。正因为any可以是任何东西,any会带来一些潜在的问题。我们要尽量定义具体的类型。

VSCode无法提示

例如下面的例子,我们直接制定了userName的类型是any。

let userName:any = "搞前端的半夏" 

当我们想使用userName去调用字符串的方法时,VSCode此时并没有提示我们有哪些方法!

但是你具体的指定类型时,VSCode就会提示我们!

let userName:string = "搞前端的半夏" 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xhol7aoX-1655361794712)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f6cdc4c6aab04d9ebf4ddec64f1293a4~tplv-k3u1fbpfcp-zoom-in-crop-mark:1956:0:0:0.image)]

使用不存在的方法

例如下面的代码,,字符串并不存在这个方法!

let userName:any = "搞前端的半夏"
userName.noExitFunction() 

即使我们使用,TS也不会报任何错。即使我们使用TSC编译,也不会报错,正常编译!

 tsc --noEmit --watch 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yKgXoSml-1655361794713)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e699116e9478460280551db6540f9e02~tplv-k3u1fbpfcp-zoom-in-crop-mark:1956:0:0:0.image)]

虽然使用any会带来一些潜在的bug,但是某些情况下必须使用any!

例如TS中的异常捕获,catch的错误类型,必须是any和unknow,这是因为我们的catch是捕获的是的throw出来的异常,throw可以抛出任何类型的异常,也可以是具体的值,也可以是自定义的异常!

你可能感兴趣的:(typescript,前端,javascript)