哈搂~大家好我是阿华,今天来跟大家分享TypeScript 的 Narrowing 概念,
Narrowing
当你使用 TypeScript 时,Narrowing概念就像是一种类型的精準筛选,帮助你更準确地了解一个变数的类型。这有点像筛麵粉一样,把杂质去掉,只保留你需要的部分。
例如,如果你有一个变量,不确定它是字串还是数字,你可以使用特殊的筛选方法来确定它的类型。一旦筛选完成,你就知道了这个变数的类型,然后可以放心地使用它。这种筛选通常使用条件检查、类型断言或其他技巧来实现。
总结来说,Narrowing 就像是对变数进行精準的筛选,让你更了解它们的类型,以确保程式码的正确性。
下面我们考虑一个 padLeft 函数,padding 可能是 number 或 string,
我们透过 if 判断 typeof padding === "number"时,让 TypeScript 可以推断此时 padding 的类型是 number,
让我们可以安全地把 padding 变数当作 number 使用
function padLeft(padding: number | string, input: string) { if (typeof padding === "number") { return " ".repeat(padding) + input; } return padding + input;}
type guards
上面例子中我们看到的 typeof 关键字 在这里当作 type guards 来使用,type guards 就像是一种工具或方法,可以帮助我们确定变数的类型。
正如我们所知道的,JavaScript 支援 typeof 运算符,它可以提供有关运行时值类型的非常基本的资讯。
它会回传:
"string""number""bigint""boolean""symbol""undefined""object""function"
而对我们来说,我们现在知道可以透过这种方法来筛选变数的类型,让我们放心地使用它。
这回就到这里,下回我们来聊泛类型 Generics~