TypeScript/tests/cases/conformance/salsa/typeFromPropertyAssignment36.ts
2018-09-17 12:56:39 -07:00

74 lines
923 B
TypeScript

// @strict: true
function f(b: boolean) {
function d() {
}
d.e = 12
d.e
if (b) {
d.q = false
}
// error d.q might not be assigned
d.q
if (b) {
d.q = false
}
else {
d.q = true
}
d.q
if (b) {
d.r = 1
}
else {
d.r = 2
}
d.r
if (b) {
d.s = 'hi'
}
return d
}
// OK to access possibly-unassigned properties outside the initialising scope
var test = f(true).s
function d() {
}
d.e = 12
d.e
if (!!false) {
d.q = false
}
d.q
if (!!false) {
d.q = false
}
else {
d.q = true
}
d.q
if (!!false) {
d.r = 1
}
else {
d.r = 2
}
d.r
// test function expressions too
const g = function() {
}
if (!!false) {
g.expando = 1
}
g.expando // error
if (!!false) {
g.both = 'hi'
}
else {
g.both = 0
}
g.both