chunbin1 / blog

git actions + dumijs 写的博客
https://chunbin1.github.io/blog/
0 stars 0 forks source link

TS is关键字 #44

Open chunbin1 opened 1 year ago

chunbin1 commented 1 year ago

常用于函数的返回值,判断类型是否是某种类型

function isString(test: any): test is string {
  return typeof test === 'string'
}

function example(foo: any) {
  if (isString(foo)) {
    console.log('it is a string' + foo)
    // 在这里 foo的类型已经变成了string,ts编译器不会报错
    console.log(foo.length) // string function
  } else {
    console.log('not string')
  }
}
example('hello world')
example(2)
chunbin1 commented 1 year ago

E.g.2

function example(foo: any) {
  if (isString(foo)) {
    console.log('it is a string' + foo)
    console.log(foo.length)
  }
  // 这里可能会产生运行错误,因为此时类型为any,不会产生编译错误
  console.log(foo.toExponential(2))
}

这说明,is关键字,只会在判断后的块作用域中生效,所以离开了作用域的foo在ts编译器中又变回any类型