Typescript guide gives "Duplicate function implementation" warning

Viewed 24355

I'm getting started with TypeScript and at moment I'm following the TypeScript in 5 minutes guide. I'm receiving a strange warning in Visual Studio Code when I hover the mouse over the greeter function name, as shown in the below image. The alert is:

[ts] Duplicate function implementation.

function greeter(person: Person): string (+1 overload)

Duplicate function implementation warning.

But there is no other implementation of this unique function in my single file! When I run tsc greeter.ts all works fine and the js file is generated.

The complete greeter.ts file:

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));

Why am I receiving this alert? How to solve it? I took a look in this question, but I believe it isn't related.

7 Answers

If you have both the src file (typescript) and the transpiled file (javascript) in the same directory and open up the javascript file in VS Code then you'll get the error. Output the transpiled file into a directory and it will not error. Use the --outDir flag: tsc --outDir ./dist greeter.ts

Got this problem in version 1.26.1 of VS Code. Generating the tsconfig.json file did not make the error go away for me.

When we open both file.ts and the transpiled file.js files and do TSC, this error occurs.
Please close the transpiled file.js and try again.

This might be because you don't have a tsconfig.json file for your TypeScript project. Try creating a tsconfig file and write a default "compilerOptions". It worked for me. The tsconfig.json file with default code that I used is :

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

For more info on VS TypeScript Compiling please refer https://code.visualstudio.com/docs/typescript/typescript-compiling

According to this article, add this simple line in the top of your Typescript file export { };

[index.ts] export { };

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

In my case, it seems that if the file didn't import/export anything it wasn't considered a module and VS Code would assume that all the files would get concatenated together. You can fix it by adding an import/export.

I also went ahead and set my tsconfig to include isolatedModules so that I would get a more helpful error message.

{
    "isolatedModules": true,
}

Old post but hope this helps someone:

I encountered this problem when I had my code written like this:

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

I fixed the problem by writing it this way instead:

export function myFunc() { ... }
Related