【问题标题】:Typescript guide gives "Duplicate function implementation" warning打字稿指南给出“重复功能实现”警告
【发布时间】:2017-10-26 19:32:47
【问题描述】:

我开始使用 TypeScript,目前我正在关注TypeScript in 5 minutes 指南。当我将鼠标悬停在 greeter 函数名称上时,我在 Visual Studio Code 中收到一个奇怪的警告,如下图所示。警报是:

[ts] 重复的函数实现。

function greeter(person: Person): 字符串(+1 重载)

但是在我的单个文件中没有这个独特功能的其他实现!当我运行tsc greeter.ts 时,一切正常并生成了 js 文件。

完整的greeter.ts 文件:

interface Person {
    firstName: string;
    lastName: string;
}

function greeter(person: Person) {
    return "Hello, " + person.firstName + " " + person.lastName;
}

var user = { firstName: "Jane", lastName: "User" };

console.log(greeter(user));

为什么我会收到此警报?如何解决?我查看了this question,但我认为它不相关。

【问题讨论】:

    标签: javascript typescript


    【解决方案1】:

    旧帖子,但希望这对某人有所帮助:

    我在编写这样的代码时遇到了这个问题:

    function myFunc() { ... }
    module.exports = {
        myFunc
    }
    

    我改用这种方式解决了这个问题:

    export function myFunc() { ... }
    

    【讨论】:

      【解决方案2】:

      在我的情况下,如果文件没有导入/导出任何内容,则它不被视为模块,VS Code 会假设所有文件将连接在一起。您可以通过添加导入/导出来修复它。

      我还继续设置我的 tsconfig 以包含 isolatedModules,这样我会收到更有用的错误消息。

      {
          "isolatedModules": true,
      }
      

      【讨论】:

        【解决方案3】:

        这可能是因为您的 TypeScript 项目没有 tsconfig.json 文件。 尝试创建一个tsconfig 文件并编写一个默认的"compilerOptions"。 它对我有用。 我使用的带有默认代码的tsconfig.json 文件是:

        {
            "compilerOptions": {
                "module": "commonjs"
            },
            "exclude": [
                "node_modules"
            ]
        }
        

        有关 VS TypeScript 编译的更多信息,请参阅 https://code.visualstudio.com/docs/typescript/typescript-compiling

        【讨论】:

        • 1up — 4 条好建议
        【解决方案4】:

        根据this article,在你的 Typescript 文件的顶部添加这个简单的行 导出 { };

        [索引.ts] 导出 { };

        declare const signalR: any;
        declare const moment: any;
        

        【讨论】:

        • 谢谢...这正是我所需要的:export {};
        【解决方案5】:

        如果您在同一目录中同时拥有 src 文件 (typescript) 和转译文件 (javascript) 并在 VS Code 中打开 javascript 文件,那么您将收到错误消息。将转译后的文件输出到目录中,不会出错。使用 --outDir 标志: tsc --outDir ./dist greeter.ts

        在 VS Code 的 1.26.1 版本中遇到了这个问题。生成 tsconfig.json 文件并没有使错误消失。

        【讨论】:

        • 使用 tsc --outDir ./dist *.ts --watch 如果你希望文件在你写的时候继续编译。
        【解决方案6】:

        当我们同时打开 file.ts 和转译后的 file.js 文件并执行 TSC 时,就会出现此错误。
        请关闭转译后的 file.js 并重试。

        【讨论】:

        • 为什么你的答案被否决了。您的回复可能是正确的,可能是由于您的解释方式。如果 .ts(打字稿)和转译文件 .js 都在 vscode 中打开,则会收到警告。如果您关闭了 .js 文件并且只关闭了 .ts 文件(打字稿),则不会出现错误。
        【解决方案7】:

        看起来这是 Visual Studio Code 中的一个错误。 GitHub上有一些关于此的问题,例如here和here。关于问题的 cmets 暗示这是一个问题,然后被修复,并且在 v1.12.1 中再次成为问题。

        看起来解决方案是运行tsc --init来初始化文件夹中的tsconfig.json。

        【讨论】:

        • tsc --init error TS5023: Unknown compiler option 'init'.
        • @tyguy7 当我遇到这个是因为最新版本的 TSC 不是在我的路径上找到的那个。相反,发现了一个非常早的版本,它不支持此标志。
        • 嗨@Andrew Li,我在 Visual Studio 2019 上遇到了类似的问题。你能帮我解决这个问题吗?
        猜你喜欢
        • 2017-02-03
        • 1970-01-01
        • 2020-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-23
        • 1970-01-01
        相关资源
        最近更新 更多