Как отследить, может ли функция генерировать TypeScript? - PullRequest
0 голосов
/ 27 сентября 2018

В объявлении для 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);
}

1 Ответ

0 голосов
/ 27 сентября 2018

Нет способа описать это.
Один из способов отследить это может быть использование типа Result / Either, используемого в более строго типизированных языках, таких как Rust, Scala, OCaml и Haskell.
YouТакже может быть интересна стоимость того, что вы используете (шаблон нового типа). Пример на самом деле использует более глубокое вложение и больше накладных расходов, в то время как затраты в основном ничто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...