我正在使用TypeScript從我的項目中消耗一個名爲shiitake的React組件。該庫沒有TypeScript聲明,所以我想我會寫一個。聲明文件看起來像下面的(也可能是不完整的,但不用擔心太多):無類型npm模塊的TypeScript自定義聲明文件
import * as React from 'react';
declare module 'shiitake' {
export interface ShiitakeProps {
lines: number;
}
export default class Shiitake extends React.Component<ShiitakeProps, any> {
}
}
我已經把這個裏面./typings/shiitake.d.ts
文件和VS的代碼,我看到下面的錯誤:
[ts] Invalid module name in augmentation. Module 'shiitake' resolves to an untyped module at 'd:/dev/foo/foobar.foo.Client.Web/node_modules/shiitake/dist/index.js', which cannot be augmented.
在消費方面,我仍然得到同樣的錯誤,即使上述聲明(因爲我有noImplicitAny
編譯器開關打開):
/// <reference path="../../../../typings/shiitake.d.ts" />
import * as React from 'react';
import Shiitake from 'shiitake';
[ts] Could not find a declaration file for module 'shiitake'. 'd:/dev/foo/foobar.foo.Client.Web/node_modules/shiitake/dist/index.js' implicitly has an 'any' type.
標準爲什麼要獲取這種類型的模塊的聲明文件是通過@types/
way,它運作良好。但是,我無法獲得定製打字工作。有什麼想法嗎?
哇,非常感謝。你是一個節省時間的人 – smac89
這是一個很大的幫助,謝謝。對我來說,問題是'import'語句不在模塊之外,而是在內部。 – dbellizzi
我希望我能像這樣十次提高這個數字。昨天我花了幾個小時。我真的希望TypeScript文檔對此更好。 –