=== "number" ? x.toFixed(0) : undefined
)
// isString : (value: unknown) => value is string
в догонку - скинули ссылку на ишью: https://github.com/microsoft/TypeScript/issues/29980
Имхо, тайпгарды — намеренно уязвимое место, где нужно быть очень внимательным. И костылить тайпгарды в более безопасный вид — лишняя морока
ну блин, чем тогда это лучше, чем as? - по крайней мере - так будем explicit видеть, где в приложении уязвимое место
кастинг против кастинга с проверками
+1. Тайпгард — способ нежно намекнуть системе типов «сим указываю, что тип на выходе — такой-то, ответственность за это — на мне». В большинстве случаев тайпгард тайпскриптом все равно корректно не отчекается. Вот предложение в середине обсуждения этого ишью «а давайте придумаем отдельный синтаксис для функции принудительного сужения с выводом суженного типа» имеет право на существование, но текущий механизм трогать не стоит
Тут еще важно что кастинг надо везде делать, легко ошибиться, а тайпгуард реюзабелен
поддерживаю. "Мы неправильно поняли и поэтому нужно усложнять язык" - некруто
безопасные тайпгарды покрыли бы 90% кейсов в приложениях... а в остальных случаях - мы бы использовали гварды в таком виде, в каком они есть - там по ссылке на ишью был класный пропоузал value is infer
Обсуждают сегодня