В объявлении для js-sys
сказано:
Мы рассмотрели внешний интерфейс TypeScript, но не расставили приоритеты, потому что TypeScript не описывает, генерируют ли функции исключения
1) Это правильно?2) Если нет, как можно пометить, могут ли функции генерировать TS?Есть ли способы, которыми может помочь компилятор?
Вот два решения.Первый фактически не проверяет типы, но они, по крайней мере, видны как способ общения с другими программистами.Второй способ выполняет некоторые ограниченные проверки, но имеет незначительные затраты времени выполнения и требует ручного усилия.
// unchecked solution
type OrThrow<T> = T;
function add(a: number, b: number): OrThrow<number> {
return a + b;
}
// checked solution with run-time cost and manual work
type Exn<T> = T & { __canThrow: true };
function exn<T>(t: T): Exn<T> {
return t as Exn<T>;
}
function sum(a: number, b: number): Exn<number> {
return exn(a + b);
}