scripting - Automatically generating ambient module declarations -


given these 2 typescript files

api/token.ts

interface token {      code: string } export default token 

and index.ts

export * './api/token' 

tsc 1.5 --declarations switch generate 2 .d.ts files (with similar content)

api/token.d.ts

interface token {      code: string; } export default token; 

and index.d.ts

export * './api/token'; 

running grunt-dts-bundle following options

    dts_bundle: {         release: {             options: {                 name: 'my-module',                 main: 'index.d.ts'             }         }     } 

will generate ambient module declaration file my-module.d.ts following content

declare module 'my-module' {     export * './api/token'; } 

however declaration not compile due : import or export declaration in ambient module declaration cannot reference module through relative module name.

how can automatically generate ambient module declaration 2 typescript files above ?

edit

please follow latest updates on https://github.com/microsoft/typescript/issues/2262

i've written blog post this. summarize, can use autodts if replace index.ts api.ts, containing following:

export {default token} './api/token'; 

make sure api.ts in same place api directory (next to, not inside it).

then need package.json file:

{   "name": "api",   "version": "1.0.0",   "main": "dist/api.js",   "scripts": {     "preinstall": "npm install autodts",     "postinstall": "autodts link",     "prepublish": "tsc && autodts generate"   },   "typescript": {     "definition": "index.d.ts"   },   "dependencies": {     "autodts": "~0.0.4"   },   "devdependencies": {     "@lib/autodts-generator": "~0.0.1",     "typescript": "~1.5.3"   } } 

it's important package name api matches file api.ts , directory api. way both node.js , typescript compiler in same places when using package.

finally, need tsconfig.json file:

{     "compileroptions": {         "declaration": true,         "module": "commonjs",         "target": "es5",         "outdir": "dist"     },     "files": [         "api.ts"     ] } 

now npm install compile package , produce bundled index.d.ts file defined in definition setting in package.json.

to use package, can like:

/// <reference path = "api/index.d.ts" />  import {token} 'api';  class foo {     key: token; } 

you can use autodts link keep reference path date, check blog post and/or autodts docs that.

the resulting index.d.ts contains:

/// <reference path="index.ref.d.ts" /> declare module 'api/token' {     interface token {         code: string;     }     export default token;  } declare module 'api' {     export { default token } 'api/token';  } 

index.ref.d.ts , api.js blank.


Comments

Popular posts from this blog

yii2 - Yii 2 Running a Cron in the basic template -

asp.net - 'System.Web.HttpContext' does not contain a definition for 'GetOwinContext' Mystery -

mercurial graft feature, can it copy? -