Я хочу сделать охранное предложение стиля asserts
, которое также может возвращать значение. Это возможно? Вот моя мечта.
// this return type gives a compiler error
export function assertString(input: any): ((asserts input is string) & string) {
if (typeof input != "string") throw "Expected string, got " + input;
return input;
}
Это можно использовать гибко.
function getLength(arg: any) {
assertString(arg);
return arg.length;
}
// but also
function getLength2(arg: any) {
return assertString(arg).length;
}
Возможно ли это в машинописи?