作为背景,我使用的是 Prisma (graphql)、mysql2 (nodejs) 和 typescript。
我正在使用交互式命令行脚本连接到 mysql2。
这是我看到的警告:
忽略传递给 Connection: 类型的无效配置选项。这目前是一个警告,但在 MySQL2 的未来版本中,如果您将无效的配置选项传递给 Connection,则会引发错误
这就是我在 MysqlConnector 类中实例化 mysql2 的方式:
this.connectionPromise = await this.mysql.createConnection(this.connectionOptions)
“connectionOptions”在类构造函数中设置:
constructor(connectionDetails: MysqlConnectionDetails) {
这是我的类型定义:
export interface MysqlConnectionDetails {
host: string
port: number
user: string
password: string
database?: string
}
这是我传递给 MysqlConnector 类的对象的类型定义:
export interface DatabaseCredentials {
type: DatabaseType
host: string
port: number
user: string
password: string
database?: string
alreadyData?: boolean
schema?: string
ssl?: boolean
filter?: any
}
因此,我传入了一个对象,该对象具有 mysql2 不需要/不需要的附加参数。我是打字稿的新手。在将对象传递给 MysqlConnector 类之前,我尝试了这个:
let forDeletion = ['type', 'alreadyData']
connector = new MysqlConnector(credentials.filter(item => !forDeletion.includes(item)))
但是我收到一个错误,说“过滤器”不是“DatabaseCredentials”类型的属性,我得出结论这可能不是正确的方法。
我假设 Typescript 中有一种方法(通过 tsconfig)可以自动过滤掉不在接收类型中的属性。“MysqlConnectionDetails”在其定义中没有属性“类型”,因此当我传入另一种类型时,它会动态获取它。