入坑 TS(一)

1、TS 采用类型后置的语法

const str: string = "我是字符串";
const num: number = "我是数值";
const bool: boolean = false;

函数怎么写?

// 有返回值
function sayHello(str: string): string {
	return str;
}
// 无返回值
function sayHello(str: string): void {
	console.log(str);
}
// 把函数赋值给一个变量
const sayHelloFn: Function = sayHello; //这样写没什么问题,但是会丢失原函数的定义
const sayHelloFn: (str: string): string = sayHello; //正确的写法,这样写会把原定义保留,类型里边的参数名并不必和实际的参数名一样,注意我这里故意写成了 strs 而不是 str。

哪些地方需要加类型

anyway

基础类型

原始类型

  • string 字符
  • number 数值
  • boolean 布尔

这些类型不是大写开头的,原因很简单,大写开头的被 ES 用掉了,而且大写开头的(比如 String)虽然也可以做类型用,但严格意义来说它只是对应原始类型的包裹对象。

在 JS 世界里,空字符串 ‘’ 和 new String(‘’) 是很不一样的概念。

字面量的字符串可以赋给以包裹器为类型的变量,但包裹器对象却无法赋给原始类型的变量。

在这里插入图片描述

any

可以匹配任意类型。(但不推荐使用)

  • 新写代码没有绝对的理由,则不要用 any。
  • 转化 JS 代码,想用 any 来绕过编译错误之前,请一定三思,并尽可能花点时间找到最适合的类型;
  • 实在没有办法,这一定给 any 加上注释。

unknown

3.0 版本引入,和 any 对等,任何类型都可以赋给 unknown,但 unknown 只能赋给 unknown 或 any。

通常用于做类型转换的中间类型。

在这里插入图片描述

void

有点类似 any 的反义词。它可以作为方法的返回值(即无返回)。

function func(str: string): void {};

void 也可以作为变量的类型,但作为变量的类型是没有意义的,因为除了 null 和 undefined 之外,如果设置了 strictNullChecks: true 的话(默认开启),你只能设置 undefined。

never

表示某个方法会 throw 抛错。

function willThrow(message: string): never {
  throw new Error(message);
}

never 类型的数据可以塞给任意类型的变量,反之则不行

在这里插入图片描述

null / undefined

这两个既可以做「值」,也可以做类型,基本上不会单独使用,一般会和其他类型合在一起用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值