一個我在這個失敗的方法是創建一個本地*.d.ts
文件中像這樣一行修改@ Saravana的例子:
import {Component} from 'react'
declare module 'lodash' {
interface Lodash {
map: Function
}
var _: Lodash;
export = _;
}
這喚起了神祕的錯誤消息
Error:(3, 16) TS2665:Invalid module name in augmentation. Module 'lodash' resolves to an untyped module at 'my-project/node_modules/lodash/lodash.js', which cannot be augmented.
錯誤讓我覺得,這種做法一定是完全錯誤的,當它真的只是抱怨一個簡單的,易於修復錯誤。當你在一個文件中使用import
時,它將文件轉換成一個模塊,當Typescript在模塊內部看到一個declare module
時,它假定你正在嘗試增強現有的定義。解決方法是簡單的:只要將進口declare
塊中,像這樣:
declare module 'lodash' {
import {Component} from 'react'
interface Lodash {
map: Function
}
var _: Lodash;
export = _;
}
如果您使用自動導入的IDE,它每次都會打破你的定義文件以這種方式 - 記住移動進口!
如何/你在哪裏聲明的定義文件?你能用一個可重複的例子更新你的問題嗎? – Saravana