問題
- TypeScript v1.8.7
次のようなファイルで tsc
は問題なく成功するが、破損した *.d.ts
を生成し、利用時に Error によりコンパイルできない。
index.ts
const f = ({ k }: { k: any }) => k;
export { f };
index.d.ts
declare const f: ({ k }: {
k: any;
}) => any;
export { f };
エラーメッセージ:
')' expected.
コンパイラオプション:
"compilerOptions": {
"declaration": true,
"module": "commonjs",
"moduleResolution": "node",
"noImplicitAny": false,
"noImplicitReturns": true,
"outDir": ".tmp/",
"rootDir": ".",
"sourceMap": false,
"target": "es5"
}
解決策
export
する関数の引数では分割代入 (destructuring assignment) を使わない。
index.ts
const f = (options: { k: any }) => {
const { k } = options;
return k;
};
export { f };
index.d.ts
declare const f: (options: {
k: any;
}) => any;
export { f };
おそらく引数に適当な名前をつけることができないのだろう。