Seb*_*ald 3 typescript definitelytyped material-ui
我们创建了类型material-ui@next并希望将它们与库一起发布,我们在上一个测试版中做到了这一点。
这是index.d.ts.
但是这些类型在当前的形式中是不可用的。在开发中,它们在本地使用并且运行良好,但是当使用库 TypeScript 传送文件时,它们似乎使用了不同的发现策略。
declare 'material-ui/Button/Button'不会找到所有引用子文件夹(例如)的类型都是 TypeScript。导入组件时会出现错误:
[ts]
Could not find a declaration file for module 'material-ui/Button/Button'. '<project path>/node_modules/material-ui/Button/Button.js' implicitly has an 'any' type.
Try `npm install @types/material-ui/Button/Button` if it exists or add a new declaration (.d.ts) file containing `declare module 'material-ui/Button/Button';`
Run Code Online (Sandbox Code Playgroud)
在npm_modules文件夹内使用时,TypeScript 是否不接受声明其他导入?因为如上所述,在本地使用它们甚至将它们移动到@types/material-ui将使它们工作。
此外,TypeScript 似乎找到了index.d.ts, 因为从“根”导入有效 ( import { Button} from 'material-ui')。
因此,事实证明 TypeScript 处理内部的类型node_modules/@types/*和node_modules/*略有不同:
输入@types是所谓的增强模块。它们是全局的,其中的所有内容都将在您的项目代码中。这就是访问子模块声明(如material-ui/Button/Button)起作用的原因。
常规 npm 模块被视为(常规)模块。因此,如果您导入子文件夹,该子文件夹必须包含类型。TypeScript 不会进入模块的根目录并检查那里的类型是否有增强模块。
这意味着您 (a) 必须将您的类型发布到DefinitelyTyped或.d.ts为每个子文件夹和文件创建文件。
你可以在这里找到更长的解释:https : //github.com/Microsoft/TypeScript/issues/17945
| 归档时间: |
|
| 查看次数: |
2426 次 |
| 最近记录: |