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
Post a Comment