# Previously

function isString(value: any): boolean {
	// toExponential() 方法以指数表示法返回该数值字符串表示形式。numObj = 77.1234; => numObj.toExponential(2) //输出 7.71e+1
  console.log(value.toExponential(2));
  return value === 'string';
}
1
2
3
4
5

# 定义 Typescript is 关键字

is

is 关键字被称为类型谓词, 它表示是否属于某个类型, 可以有效地缩小类型范围, 它可以帮助开发者在编辑阶段发现错误,从而避免一些隐藏的运行时错误。

作用: 既可以作为返回值,也可以缩小变量(函数内部会校验类型)的类型范围。

# 使用

// incorrect
function isString(value: any): boolean {
	// toExponential() 方法以指数表示法返回该数值字符串表示形式。
  console.log(value.toExponential(2));
  return typeof value === 'string';
}

// 使用 Demo
function isString_is(value: any): value is string {
  return typeof value === 'string';
}

function testString(string: any) {
  if (isString(string)) {
    console.log(string.length)
    console.log(string.toExponential(2))
  }

  // 测试 is 收窄范围和普通模式下的优势
  if (isString_is(string)) {
    console.log(string.length)
    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toExponential
    // Property 'toExponential' does not exist on type 'string'.(2339)
    console.log(string.toExponential(2))
  }
}

testString('female');

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

直接体验 (opens new window)

# 快来耍耍啊

# 🌰🌰

// template
1

# 游乐场


# 参考答案

// answer
1

# 参考资料

what-does-the-is-keyword-do-in-typescript (opens new window)