所以我尝试在TypeScript项目中使用react-console-emulator组件。
当我尝试导入它时:
import Terminal from 'react-console-emulator';
我得到以下错误:
Could not find a declaration file for module 'react-console-emulator'.
'.../dist/Terminal.js' implicitly has an 'any' type.
Try `npm i --save-dev @types/react-console-emulator` if it exists or add a new declaration (.d.ts) file containing `declare module 'react-console-emulator';`
所以我理解的是这里的问题是Terminal.js
可能没有声明类型,这就是导致问题的原因。
处理这种情况的最佳实践是什么?我真的只是想要一个能够在JSX中使用这个组件的逃生舱口。
从错误看来,我可以使用。d。它的文件,但这是最好的方式吗?
解决这个问题的常见方法是在代码库的根目录中创建一个文件,例如global.d.ts
,其中包含您自己为库定制的类型:
declare module 'react-console-emulator' {
const emulator: React.Component<{
contentStyle?: React.CSSProperties;
style?: React.CSSProperties;
inputAreaStyle?: React.CSSProperties;
promptLabelStyle?: React.CSSProperties;
inputStyle?: React.CSSProperties;
inputTextStyle?: React.CSSProperties;
}>;
export default emulator;
}
但是,正如您所看到的,您必须自己描述值的类型形状。
UPD:我添加了一些你可能会在这个库中看到的道具,但你需要确保那里的道具与你使用的库版本相对应。