Как я могу в TypeScript установить типы аргументов, передаваемых из process.argv
, без использования утверждений типа? Поскольку использование as
приведет к принудительному типу, если я хочу избежать этого, если это возможно.
Что у меня сейчас:
type AppName = 'editor' | 'terminal';
function main(args: string[]): void {
const app: AppName = args[0] as AppName;
}
main(process.argv.slice(2))
Что я хочу (псевдокод):
type AppName = 'editor' | 'terminal';
function main(args: string[]): void {
// This doesn't actually work, since `in` doesn't work on `type`.
if (!(args[0] in AppName)) {
throw new Error("The first argument is not an app name.")
}
// The error: Type 'string' is not assignable to type 'AppName'.
const app: AppName = args[0];
}
main(process.argv.slice(2))
Возможно ли что-нибудь подобное этому? С условным условием TS должен обнаружить, что я уже удостоверился, что первый аргумент является одним из заданных имен приложения, и, следовательно, принять установку его на переменную с типом AppName
.