2017-02-28 16 views
0

活字体の一般的な機能とインデックス付き引数

{ 
    "name": "browserify-test", 
    "version": "1.0.0", 
    "description": "", 
    "main": "dist/index.js", 
    "typings": "dist/index.d.ts", 
    "scripts": { 
     "build:tsc": "tsc --outDir dist", 
     "build:browser": "browserify src/index.ts -p tsify --standalone MyLib > dist/myLib.js" 
    }, 
    "devDependencies": { 
     "browserify": "^14.0.0", 
     "tsify": "^3.0.0", 
     "typescript": "^2.1.5" 
    } 
} 

するtsconfig.json後:

{ 
    "compilerOptions": { 
     "noImplicitAny": true, 
     "module": "commonjs", 
     "target": "ES5", 
     "emitDecoratorMetadata": true, 
     "experimentalDecorators": true, 
     "sourceMap": true, 
     "declaration": true 
    } 
} 

ファイルsrc/evets.d.ts

export interface MyEvent { 
    name: string 
} 

そして最後にエントリポイントsrc/index.js

import * as events from './events'; 

export class MyLibrary { 
    public test(eventInstance: events.MyEvent) { 
     console.log(eventInstance); 
     console.log(events); 
    } 
} 

純粋なタイスクリプト版を作成します。だから、私はエラーを次取得npm run build:browserを呼び出し、完全にnpm run build:tsc作品を命じるが、browserifyを構築しようとして:

> [email protected] build /home/aszmyd/tmp/browserify-test 
> browserify src/index.ts -p tsify --standalone MyLib > dist/myLib.js 

Error: Cannot find module './events' from '/home/aszmyd/tmp/browserify-test/src' 

browserifyが正しくd.ts拡張子を持つタイプ定義ファイルを消費することができないようです。


上記の例

は、2つの場合にワークス:

  1. index.tsに私はこのようなインポートする:私は削除する

  2. (終了.Dに注意)import * as events from './events.d;console.log(events);行(?!) - どのようにevents.***型を使用できますが、セット全体(エイリアス)を使用することはできませんか?


私はイムは、ここで何かのダミーを行方不明だと思うが、アイデアのイム不足。

答えて

1

と呼ばれるtypescriptファイルをインポートする

import * as events from './events'; 

の試みを実行している「events.ts」インポートファイルと同じディレクトリにあります。これは、の相対パスであるためです。

./events.dをインポートすると、「それは作品」理由を説明し、同じディレクトリにevents.d.tsをインポートします)

外部モジュールをインポートするには、import文はモジュール名(パスではなく)を使用して行われます。したがって、「イベント」と呼ばれるモジュールに、import文は、外部モジュールをインポートする場合、コンパイラはモジュール「を入力する」、定義ファイルを探します

import * as events from 'events' 

だろう。モジュールは、このファイルがあなたの「event.d.ts」または

declare module 'events' { 
    export interface MyEvent { 
     name: string 
    } 
} 
+0

おかげのような可能性が高くなり、外部モジュール定義ファイルのように見える内部のモジュール定義可能性が構成されている方法に応じて!これは意味をなさない。しかし、別のフォルダの内部モジュール定義を使用できるかどうか教えてください。私。'module.d.ts'ファイルが同じフォルダにない場合、' module * 'から 'import *をsthとして作成できますか?私はコンパイラが 'module.d.ts'を探し、' node_modules/module'、 '../ node_modules/module'などが見つかるまでそれを見つけます。 –

+0

確かに。モジュール名で指定されたサブフォルダを持つ 'typings'ディレクトリを作成します。そのサブフォルダにモジュール定義ファイルを貼り付けます。 'tsconfig.json'では' typings'がコンパイルパスから除外されていないことを確認します。それだ –

関連する問題