1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
//// [assertionTypePredicates2.js]
/**
* @typedef {{ x: number }} A
*/
/**
* @typedef { A & { y: number } } B
*/
/**
* @param {A} a
* @returns { asserts a is B }
*/
const foo = (a) => {
if (/** @type { B } */ (a).y !== 0) throw TypeError();
return undefined;
};
export const main = () => {
/** @type { A } */
const a = { x: 1 };
foo(a);
};
//// [assertionTypePredicates2.js]
"use strict";
/**
* @typedef {{ x: number }} A
*/
exports.__esModule = true;
exports.main = void 0;
/**
* @typedef { A & { y: number } } B
*/
/**
* @param {A} a
* @returns { asserts a is B }
*/
var foo = function (a) {
if ( /** @type { B } */(a).y !== 0)
throw TypeError();
return undefined;
};
var main = function () {
/** @type { A } */
var a = { x: 1 };
foo(a);
};
exports.main = main;
|