refactor(types): simplify UnwrapRef + specify iterable method return type (#1444)

This commit is contained in:
Pick
2020-06-26 00:04:14 +08:00
committed by GitHub
parent c43a6e61a0
commit f54be6a462
2 changed files with 19 additions and 2 deletions

View File

@@ -154,12 +154,28 @@ function createForEach(isReadonly: boolean, shallow: boolean) {
}
}
interface Iterable {
[Symbol.iterator](): Iterator
}
interface Iterator {
next(value?: any): IterationResult
}
interface IterationResult {
value: any
done: boolean
}
function createIterableMethod(
method: string | symbol,
isReadonly: boolean,
shallow: boolean
) {
return function(this: IterableCollections, ...args: unknown[]) {
return function(
this: IterableCollections,
...args: unknown[]
): Iterable & Iterator {
const target = toRaw(this)
const isMap = target instanceof Map
const isPair = method === 'entries' || (method === Symbol.iterator && isMap)