TypeScript/tests/baselines/reference/narrowTypeByInstanceof.js
2015-05-06 20:25:12 -07:00

54 lines
1.3 KiB
TypeScript

//// [narrowTypeByInstanceof.ts]
class Match {
public range(): any {
return undefined;
}
}
class FileMatch {
public resource(): any {
return undefined;
}
}
type FileMatchOrMatch = FileMatch | Match;
let elementA: FileMatchOrMatch, elementB: FileMatchOrMatch;
if (elementA instanceof FileMatch && elementB instanceof FileMatch) {
let a = elementA.resource().path;
let b = elementB.resource().path;
} else if (elementA instanceof Match && elementB instanceof Match) {
let a = elementA.range();
let b = elementB.range();
}
//// [narrowTypeByInstanceof.js]
var Match = (function () {
function Match() {
}
Match.prototype.range = function () {
return undefined;
};
return Match;
})();
var FileMatch = (function () {
function FileMatch() {
}
FileMatch.prototype.resource = function () {
return undefined;
};
return FileMatch;
})();
var elementA, elementB;
if (elementA instanceof FileMatch && elementB instanceof FileMatch) {
var a = elementA.resource().path;
var b = elementB.resource().path;
}
else if (elementA instanceof Match && elementB instanceof Match) {
var a = elementA.range();
var b = elementB.range();
}