Помимо этого, TypeScript способен сузить тип Layer, основываясь на теге:
function drawLayer(layer: Layer) {
if (layer.type === 'fill') {
const {paint} = layer; // Тип FillPaint
const {layout} = layer; // Тип FillLayout
} else if (layer.type === 'line') {
const namedPoint = {...pt, ...id};
namedPoint.name; // ok, тип string
function isDefined(x: T | undefined): x is T {
return x !== undefined;
}
Одна из целей системы типов в TypeScript — это поиск кода, который выдаст исключение при выполнении, без его запуска.
el!.textContent = 'Ready'; // ok, мы утвердили, что el не является null.