'[Symbol.iterator]()' 方法,返回一个迭代器

'[Symbol.iterator]()' method that returns an iterator

提问人:cucuru 提问时间:1/17/2023 更新时间:1/17/2023 访问量:720

问:

使用严格模式时,我在代码中遇到此错误,并且我没有管理它。

"message": "Type 'MyType<string>[] | undefined' must have a '[Symbol.iterator]()' method 

它发生在以下代码行中:

const [optionAll, ...options] = await service.getLineOfBusiness().toPromise();

此服务方法返回 MyType 列表的可观察对象:

public getLineOfBusiness(): Observable<MyType<string>[]> 

这个 MyType 是一个非常简单的界面:

export interface MyType<T = unknown> {
   key: string;
   value: T;
   extra?: string;
}

我该如何解决?

Angular TypeScript 严格模式

评论


答:

1赞 GOTO 0 1/17/2023 #1

MyType<string>[]可以使用类似数组的语法进行解构,但不能。undefined

如果您确定将始终返回此特定用法(而不是)的数组,则可以将非空断言 () 添加到等待的表达式中以抑制错误:getLineOfBusiness()undefined!

const [optionAll, ...options] = (await service.getLineOfBusiness().toPromise())!;