【问题标题】:Typescript "exported external package typings is not a module"Typescript“导出的外部包类型不是模块”
【发布时间】:2016-04-09 09:29:54
【问题描述】:

我正在尝试创建我的第一个 Typescript 定义文件。主题代码为filename.js(index.js):

module.exports = {
  extension: extension,
  basename: basename,
  removeSuffix: removeSuffix,
  removeSuffixWithDelimiter: removeSuffixWithDelimiter,
  appendSuffix: appendSuffix,
  appendSuffixWithDelimiter: appendSuffixWithDelimiter,
  directoryName: directoryName
}
function extension(filename) {}
function basename(filename) {}
function removeSuffix(filename) {}
function removeSuffixWithDelimiter(delimiter, filename) {}
function appendSuffix(suffix, filename) {}
function appendSuffixWithDelimiter(suffix, delimiter, filename) {}
function directoryName(filename) {}

我目前拥有的定义(index.d.ts)文件:

declare module "filename.js" {
  export function extension(filename: string): string;
  export function basename(filename: string): string;
  export function removeSuffix(filename: string): string;
  export function removeSuffixWithDelimiter(delimiter: string|number, filename: string): string;
  export function appendSuffix(suffix: string, filename: string): string;
  export function appendSuffixWithDelimiter(suffix: string, delimiter: string|number, filename: string): string;
  export function directoryName(filename: string): string;
}

这很好用(在我的编辑器中自动完成),但我得到一个编译错误:

index.ts(21,29):错误 TS2656:导出的外部包类型文件“filename.js/index.d.ts”不是模块。请联系包作者更新包定义。

这个错误是什么意思(Typescript 的新手),更重要的是,我应该如何修改我的定义以使其更正确?

【问题讨论】:

  • 你能解决这个问题吗?我也有同样的问题。
  • @emzero 不,到目前为止我还做不到
  • 希望它会在 TS 2.0 中得到修复

标签: javascript typescript


【解决方案1】:

您提供的数据的定义文件可以是:-

declare module customTypings{
 interface filename{
  extension(filename: string): string;
  basename(filename: string): string;
  removeSuffix(filename: string): string;
  removeSuffixWithDelimiter(delimiter: string|number, filename: string): string;
  appendSuffix(suffix: string, filename: string): string;
  appendSuffixWithDelimiter(suffix: string, delimiter: string|number, filename: string): string;
  directoryName(filename: string): string;
 }
}

你可以通过指定使用这个打字文件:-

/// <reference path="pathName" />

看看它是否有效。

有关更多信息,请参阅已创建的 .d.ts 文件。例如angular-material.d.ts

【讨论】:

  • 同样的错误,不幸的是。此外,您的示例没有提供准确的自动完成功能。
  • 您是否看到已经创建的 .d.ts 文件。也许我们应该在创建我们的文件时引用这些文件,这样我们就不会在代码中包含任何额外的东西。
  • 我在问题中包含了我的 index.d.ts 文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-14
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 2015-06-21
  • 2015-08-11
  • 1970-01-01
相关资源
最近更新 更多