我需要为外部模块创建一个类型声明。我需要为这个声明创建一个映射类型,如果做不到,模块看起来就像
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属性注释为函数,并从接口更改为类型。
发布于 2021-06-24 13:22:32
有一些带有此类型定义的。
我相信您不能在同一范围内声明映射类型和已知属性,syntactically
() => <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>
}https://stackoverflow.com/questions/68108494
复制相似问题