# 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
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
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
# 快来耍耍啊
# 🌰🌰
// template
1
# 游乐场
# 参考答案
// answer
1
# 参考资料
what-does-the-is-keyword-do-in-typescript (opens new window)