1
interface Data {
[key: string]: number
}
interface MetaData {
date: Date
}
export type Datapoint = MetaData & Data
到目前爲止好。問題來了,當我需要做出其中的一個:
const d: Datapoint = {date: new Date()}
-> error TS2322: Type '{ date: Date; }' is not assignable to type 'Datapoint'.
Type '{ date: Date; }' is not assignable to type 'Data'.
Property 'dd' is incompatible with index signature.
Type 'Date' is not assignable to type 'number'.
我該如何解決這個問題?
注意這是一個*路口*類型,而不是聯合類型(見https://www.typescriptlang.org/docs/handbook/advanced-types.html)。如果它是一個聯合類型('MetaData | Data'),那麼你可以確定,但是你不能在給定它們的定義的情況下使它成爲'MetaData' *和*'Data'的東西(因爲'date'屬性不能同時是'數字「和」日期「)。 – jonrsharpe
無法在TypeScript中描述您想要的內容。索引類型'{[key:string]:number}'意味着每個屬性都必須有'數字'類型,沒有規定類似的東西'但是如果屬性名稱是'日期'它必須是'日期' ,而不是'號碼'「 – artem