СТАТЬЯ В БЛОГЕ: https://javascriptlearner815.github.io/blog/2021/02/21/typescript-type-annotations.html
В TypeScript аннотации типов позволяют вам заставить любой тип данных быть тем, что вы выберете. Если его тип данных не тот, который вы указали, консоль выдаст ошибку.
Пример
Вот пример:
function remainder(dividend: number, divisor: number) {
return dividend % divisor;
}
const variableOne = ["Hello", "World"];
const variableTwo = [12, "Hello World"];
const variableThree = [5, 2];
const remainderOne = remainder(variableOne[0], variableOne[1]);
const remainderTwo = remainder(variableTwo[0], variableTwo[1]);
const remainderThree = remainder(variableThree[0], variableThree[1]);
const results = [remainderOne, remainderTwo, remainderThree];
for (const result of results) {
if (isNaN(result)) {
continue;
}
console.log(result);
}
Консоль должна вывести что-то вроде этого:
TypeError: Argument of type 'string' is not assignable to parameter of type 'number'.
TypeError: Argument of type 'string | number' is not assignable to parameter of type 'number'.
TypeError: Type 'string' is not assignable to type 'number'.
Плюсы и минусы
Плюсы
- Гарантирует, что вы получите нужный тип данных
- Короткий
- Легко понять
- Обеспечивает приятный интерфейс в IDE
Минусы
- Выдает ошибку, если получает другой тип данных
- Продолжает выполнение кода
Предостережения
- Если тип данных не тот, который вы указали, TypeScript выдаст ошибку. Чтобы справиться с этим, вы можете использовать try / catch:
function remainder(dividend: number, divisor: number) {
return dividend % divisor;
}
try {
const result = remainder("Some Random Text", 123);
console.log(`The result is ${result}.`);
} catch {
console.error("Wrong data type.");
}
- Даже если тип данных не тот, который вы указали, код продолжит выполнение. Чтобы справиться с этим, вы можете использовать
typeof
:
function remainder(dividend: number, divisor: number) { if (typeof dividend === 'number' || typeof divisor === 'number'){ const response = dividend % divisor; /* if (!Number.isNaN(response)) */ return response; } } try { const result = remainder("Some Random Text", 123);
console.log(`The result is ${result}.`); } catch { console.error("Wrong data type."); }