打字稿:使用声明合并扩展外部javascript库的接口

时间:2020-07-24 06:37:12

标签: typescript

我在项目中使用tinymce,并安装了@types/tinymce。但是,在调用tinymce.init()并传递Settings对象时,@types/tinymce的{​​{1}}中缺少某些属性,并且出现错误:

呼叫代码:

index.d.ts

错误消息:

tinymce.init({
  selector: "#editor",
  height: 400,
  plugins: "paste",
  element_format: "html",
  paste_block_drop: true,
  [...]
}

Argument of type '{ selector: string; height: number; menubar: string; toolbar: string; plugins: string; element_format: string; paste_data_images: true; paste_block_drop: boolean; paste_enable_default_filters: boolean; paste_remove_styles: boolean; paste_retain_style_properties: string; setup: (editor: Editor) => void; }' is not assignable to parameter of type 'Settings'. Object literal may only specify known properties, and 'paste_block_drop' does not exist in type 'Settings'. 中的定义如下:

index.d.ts

我搜索并阅读了几个StackOverflow答案,并阅读了Typescript docs ,并试图创建一个具有以下内容的文件export interface Settings { base_url?: string; table_toolbar?: string; [...] }

tinymce-extensions.d.ts

但是它不起作用,我仍然收到上述错误消息。 我在做什么错了?

1 个答案:

答案 0 :(得分:1)

我尝试了几种方法,但是它们没有用。我不确定,但是我感觉有些东西坏了。

因此,如果您不能提交此lib并仍然希望拥有类型,则可以使用这种简单但非常难看的方法:

tinymce.init({
    selector: "#editor",
    height: 400,
    plugins: "paste",
    element_format: "html",
    paste_block_drop: true,
} as Settings)