Promise<Promise> cannot exist in JS · Issue #27711 · microsoft/TypeScript (original) (raw)
TypeScript Version: Version 3.2.0-dev.20181011
Search Terms:
is:open label:Bug promise
label:Bug wrapped promise
label:Bug wrapped nested
Code
const p1 = new Promise<Promise>((resolveOuter) => { const innerPromise = new Promise((resolveInner) => { console.log('Resolving inner promise') resolveInner(1) })
console.log('Resolving outer promise')
resolveOuter(innerPromise)
})
p1.then((p2: Promise) => { p2.then((num) => console.log('the number is: ', num) ) })
Expected behavior:
Compilation should fail, because p1
is actually a Promise<number>
due to promise unwrapping.
Actual behavior:
Compilation should fail, requiring code which looks like:
const p1 = new Promise<Number>((resolveOuter) => {
const innerPromise = new Promise<Number>((resolveInner) => {
console.log('Resolving inner promise')
resolveInner(1)
})
console.log('Resolving outer promise')
resolveOuter(innerPromise)
})
p1.then((p2: Number) => {
console.log('the number is: ', p2)
})
Playground Link:
Runtime error
No runtime error
Related Issues:
Didn't find related issue