tug*_*erk 38 typescript ecmascript-6 reactjs visual-studio-code typescript2.0
我正在使用一个名为shiitake的React组件从npm进入我使用TypeScript的项目.该库没有TypeScript声明,所以我想我会写一个.声明文件如下所示(可能不完整,但不要太担心):
import * as React from 'react';
declare module 'shiitake' {
export interface ShiitakeProps {
lines: number;
}
export default class Shiitake extends React.Component<ShiitakeProps, any> {
}
}
Run Code Online (Sandbox Code Playgroud)
我把这个内部./typings/shiitake.d.ts
文件和VS代码,我看到以下错误:
[ts]增强中的模块名称无效.模块'shiitake'解析为'd:/dev/foo/foobar.foo.Client.Web/node_modules/shiitake/dist/index.js'中的无类型模块,该模块无法扩充.
在消费方面,即使使用上述声明(因为我noImplicitAny
打开了编译器开关),我仍然会得到相同的错误:
/// <reference path="../../../../typings/shiitake.d.ts" />
import * as React from 'react';
import Shiitake from 'shiitake';
Run Code Online (Sandbox Code Playgroud)
[ts]找不到模块'shiitake'的声明文件.'d:/dev/foo/foobar.foo.Client.Web/node_modules/shiitake/dist/index.js'含有'any'类型.
获取此类模块的声明文件的标准原因是通过@types/
方式,并且运行良好.但是,我不能让自定义打字工作.有什么想法吗?
moh*_*azy 89
声明declare module 'shiitake';
应该在全球范围内.即非模块中的顶级声明(其中模块是具有至少一个顶级的文件import
或export
).
declare module '...' { }
模块中的表单声明是一种扩充.有关更多详细信息,请参阅Typescript模块扩充.
所以你希望这个文件看起来像:
declare module 'shiitake' {
import * as React from 'react';
export interface ShiitakeProps {
lines: number;
}
export default class Shiitake extends React.Component<ShiitakeProps, any> {
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9675 次 |
最近记录: |