TypeScript自学课(6)-any

举报
搞前端的半夏 发表于 2022/04/30 08:42:18 2022/04/30
【摘要】 在上文中,我们使用了TSC编译TS,接触到了第一个数据类型number.在TS中提供了 以下基本类型:布尔类型(boolean)数据类型(number)字符串类型(string)数组类型(array)元组类型(tuple)枚举类型(enum)任意值类型(any)null 和 undefinedvoid 类型never 类型其中元组、枚举、任意any、void类型和 never类型是TypeS...

在上文中,我们使用了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;

image-20220423220152272

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

let userName = "搞前端的半夏"

image-20220423220946485

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

VSCode无法提示

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

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

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

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

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

image-20220423222045255

使用不存在的方法

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

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

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

 tsc --noEmit --watch

image-20220423222704632

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

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。