38
votes

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

7 Answers

85
votes

Looks like this is a bug in Visual Studio Code. There are a few issues on GitHub about this, such as here and here. The comments on the issues imply that it was an issue, then was fixed, and has just become an issue again in v1.12.1.

It looks as if the solution is to run tsc --init to initialize the tsconfig.json in the folder.

8
votes

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.

4
votes

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;
2
votes

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.

2
votes

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

2
votes

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,
}
1
votes

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() { ... }