내가 사용하여 mssql 라이브러리는 이러 interface
:
export interface IRecordSet<T> extends Array<T> {
columns: IColumnMetadata;
toTable(name?: string): Table;
}
내가 가져오는 함수는 데이터베이스에서 데이터의 배열을 반환합니다 IRecordSet<T>
도록의 배열의 배열을 포함하는 일반적인 유형 <T>
. 이처럼 보인:
[[{}, {}, ...], [{}, {}, ...], ...]
import { IRecordSet } from 'mssql'
type Data<T> = Array<IRecordSet<T>>
async function getData (sql: string): Promise<Data<any>> {
// connect to db, run sql
return []
}
지금 내가 필요로 하는 함수 호출 getData()
고 싶 유형 실제 반환되는 데이터를 제공하여 일반적인 유형 IRecordSet<T>
.
내가 이것을 알고 작동하지 않지만,이것은 내가 지금:
interface BookData {
name: string
author: string
}
interface CarData {
make: string
model: string
}
type BooksAndCars = Data<[BookData, CarData]>
async function getBooksAndCars (): Promise<void> {
const myData: BooksAndCars = await getData(`
SELECT name, author FROM Books;
SELECT make, model FROM Cars;
`)
const firstBook: BookData = myData[0][0]
const cars: CarData[] = myData[1]
// ...
}
타이프 라이터가 말하기:
Type '[BookData, CarData]' is not assignable to type 'BookData'.
Type 'IRecordSet<[BookData, CarData]>' is not assignable to type 'CarData[]'.
내가 이해 이러한 오류도 없지만 알고 있을 입력하는 방식 myData
, firstBook
& cars
변수를 사용하여 정의된 인터페이스(BookData
& CarData
).
무엇을 해야 type BooksAndCars = Data<[BookData, CarData]>
다..?