2016-05-18 103 views
0

我正在嘗試爲HtmlWebpackPlugin編寫打字稿聲明文件,但是我無法正常工作。輸出類的NodeJS模塊的TypeScript聲明

HtmlWebpackPlugin默認導出是類HtmlWebpackPlugin的構造函數。我打算像這樣使用它。

somefile.ts

import * as HtmlWebpackPlugin from 'html-webpack-plugin' 
new HtmlWebpackPlugin({..some options...}) 

我試圖將其定義如下

shim.d.ts

/// <reference path="./shim.d.ts"/> 
declare module 'html-webpack-plugin' { 
    interface Options { 
    title: string, 
    filename: string, 
    template: string, 
    inject: (boolean | 'head' | 'body'), 
    favicon: string, 
    hash: boolean, 
    cache: boolean, 
    showErrors: boolean, 
    chunks: any, 
    chunksSortMode: ('none' | 'auto' | 'dependency'), 
    excludeChunks: any, 
    xhtml: boolean 
    } 
    class HtmlWebpackPlugin { 
    constructor(options: Options); 
    } 
    export default ??? 
} 

我不知道在???填寫在這裏。我嘗試導出HtmlWebpackPlugintypeof HtmlWebpackPlugin,但沒有任何效果。它給我以下類型的錯誤。

回答

0

在這裏你去,

export { HtmlWebpackPlugin }; 

    // or you may directly export class 

    export class HtmlWebpackPlugin { 
    constructor(options: Options); 
    } 

希望這有助於!

+0

我不認爲這項工作。 HtmlWebpackPlugin是Node.JS中的默認導出,因此聲明中HtmlWebpackPlugin的導出也應該是默認的。 –

+0

我已經更新了我的問題,以防你想看看 –

+0

是的,你是對的,這將無法正常工作'new HtmlWebpackPlugin({.. some options ...})',我檢查了是否使用'import * as X從「html-webpack-plugin」;'然後'new X.HtmlWebpackPlugin({..})'工作。讓我試試看它是否可以直接使用。 –

0

import * as Module from 'module'表單不再適用於AMD/CommonJS,以便與ES6模塊(使用此表單導出整個名稱空間)有更好的互操作性。

解決方案:

製作HtmlWebpackPlugin出口非模塊實體默認。它使用

declare module 'html-webpack-plugin' { 
    interface Options { 
    title: string, 
    filename: string, 
    template: string, 
    inject: (boolean | 'head' | 'body'), 
    favicon: string, 
    hash: boolean, 
    cache: boolean, 
    showErrors: boolean, 
    chunks: any, 
    chunksSortMode: ('none' | 'auto' | 'dependency'), 
    excludeChunks: any, 
    xhtml: boolean 
    } 

    export = class HtmlWebpackPlugin { 
    constructor(options: Options); 
    } 
} 

導入所需的風格

import HtmlWebpackPlugin = require('html-webpack-plugin')