Vit*_*aly 6 javascript typescript
TS v3.x 带来了新类型:unknown. 但目前还不太清楚如何轻松地使用这种类型来代替any. 示例:您正在使用一些没有类型的第三方库。而且您没有时间自己编写这些类型。您需要处理该库提供的一些数据。
前unknown:
function handle(data: any) {
if (data && data.arrayProp && typeof data.arrayProp[Symbol.iterator] === 'function') {
for (let x of data.arrayProp) {...}
}
}
Run Code Online (Sandbox Code Playgroud)
和unknown:
function handle(data: unknown) {
// this line gives TS error: `data` is unknown type
if (data && data.arrayProp && typeof data.arrayProp[Symbol.iterator]=== 'function') {
...
Run Code Online (Sandbox Code Playgroud)
互联网上的大多数文档都使用某种instanceof方法来检查类型data。但我不太感兴趣data是什么类型。我想知道的是是否存在arrayProp。就是这样
如何用unknown类型来做到这一点?
问题unknown是你必须先缩小它的类型才能使用它。您可以为此使用自定义类型保护:
interface ArrayProp {
arrayProp: []
}
function isArrayProps(value: unknown): value is ArrayProp {
return !!value && !!(value as ArrayProp).arrayProp;
}
function handle(data: unknown) {
if (isArrayProps(data) && typeof data.arrayProp[Symbol.iterator] === 'function') {
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4503 次 |
| 最近记录: |