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