背景是,我正在尝试从
.env
中读取DatabaseType
来构建一个TypeORM连接,代码如下:const config: ConnectionOptions = {
type: process.env.DB_CONNECTION, // A type of DatabaseType = 'mysql'|'postgres'|'sqlite'|...
//...
}
下面是支持的DatabaseType
列表:
const SUPPORTED_DB_TYPES = ['mysql', 'mariadb', 'postgres'] as const; // This array contains selected DatabaseType
当我想缩小类型时,问题就出现了。目前这个函数能够工作,但是涉及到类型转换:
const isSupportedDBType = (dbConnection: string|undefined): dbConnection is typeof SUPPORTED_DB_TYPES[number] =>
dbConnection !== undefined &&
((SUPPORTED_DB_TYPES as readonly string[]).indexOf(dbConnection) > -1);
if(!isSupported(process.env.DB_CONNECTION)) {/*...*/}
由于删除 as readonly string[]
后出现以下错误,我必须使用强制类型转换:
参数类型“string”不能赋给参数类型“mysql”|“mariadb”|“postgres”
是否有一种方法可以使用 as readonly string[]
实现呢?