2

背景として、私は Prisma (graphql)、mysql2 (nodejs)、および typescript を使用しています。

対話型コマンド ライン スクリプトを使用して mysql2 に接続しています。

これは私が見ている警告です:

Connection: type に渡された無効な構成オプションを無視します。これは現在のところ警告ですが、MySQL2 の将来のバージョンでは、接続に無効な構成オプションを渡すとエラーがスローされます。

これは、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)))

しかし、「filter」はタイプ「DatabaseCredentials」のプロパティではないというエラーが表示され、これはおそらく正しい方法ではないと結論付けました。

Typescript には (tsconfig を介して) 受信型にないプロパティを自動的に除外する方法があると想定しました。「MysqlConnectionDetails」には、その定義にプロパティ「タイプ」がないため、別のタイプを渡すと動的に取得されます。

4

2 に答える 2