[英]TypeScript how to use mapped type in module declaration?
我需要為外部模塊創建類型聲明。 我需要為此聲明創建一個映射類型,但沒有這樣做,模塊看起來像
declare module "deferred-regl"{
import { Regl } from 'regl'
type IDregl<T> = {
setRegl: (regl?: Regl) => void
queue: any[]
setQueue: (queuInput: any[]) => void
(): IDregl<Regl>
[K in keyof T]: () => <T[K]>
};
export default function defRegl(): IDregl<Regl>
}
它在[K in keyof T]: () => <T[K]>
行上失敗並出現錯誤:
Cannot find name 'K'. [2304]
Cannot find name 'keyof'. [2304]
和其他語法錯誤 我想創建一個類型,用一些新的屬性和方法擴展 Regl 類型。 但也采用 Regl 上的現有鍵,並用我以前使用的接口的函數包裝它們
export interface IDregl extends Regl{
setRegl: (regl?: Regl) => void
queue: any[]
setQueue: (queuInput: any[]) => void
(): IDregl
}
但無法弄清楚如何將 Regl 屬性注釋為函數並從接口更改為類型
有一些發布了這種類型定義。
() => <T[K]>
不是有效的類型定義我相信你正在尋找的是這樣的:
declare module "deferred-regl"{
import { Regl } from 'regl'
type IDregl<T> = {
setRegl: (regl?: Regl) => void
queue: any[]
setQueue: (queuInput: any[]) => void
(): IDregl<Regl>
} & {
[K in keyof T]: () => T[K]
};
export default function defRegl(): IDregl<Regl>
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.