-
Notifications
You must be signed in to change notification settings - Fork 12.9k
Labels
Domain: lib.d.tsThe issue relates to the different libraries shipped with TypeScriptThe issue relates to the different libraries shipped with TypeScriptFix AvailableA PR has been opened for this issueA PR has been opened for this issueIn DiscussionNot yet reached consensusNot yet reached consensusSuggestionAn idea for TypeScriptAn idea for TypeScript
Milestone
Description
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<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: Promise<Number>) => {
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
pauldraper, trotyl, NN---, r-k-b, biels and 20 morebrainkim, iugo, heyikang and He-Pin
Metadata
Metadata
Assignees
Labels
Domain: lib.d.tsThe issue relates to the different libraries shipped with TypeScriptThe issue relates to the different libraries shipped with TypeScriptFix AvailableA PR has been opened for this issueA PR has been opened for this issueIn DiscussionNot yet reached consensusNot yet reached consensusSuggestionAn idea for TypeScriptAn idea for TypeScript