使用打字稿中的纯JS模块的最佳实践是什么?



所以我尝试在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:我添加了一些你可能会在这个库中看到的道具,但你需要确保那里的道具与你使用的库版本相对应。

相关内容

  • 没有找到相关文章

最新更新