/ / error TS2403: Les déclarations de variable suivantes doivent avoir le même type - typescript

erreur TS2403: Les déclarations de variable suivantes doivent avoir le même type - typescript

Je reçois cette erreur dactylographiée:

error TS2403: Subsequent variable declarations must have the same type.  Variable "environment" must be of type "string", but here has type "any".

Code

package.json

...
"typescript": "^1.8.10",
...

server.ts

var environment = require("./config/config.js")()

./config/config.ts

module.exports = function(): string {
//Environment
let env:string = process.env.NODE_ENV || "development"
return env
}

Question:

Que dois-je faire pour que la valeur de retour de la fonction soit reconnue en tant que string?

modifier

tsconfig

{
"compilerOptions": {
"target": "ES5",
"module": "system",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"moduleResolution": "node",
"removeComments": false,
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true
},
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts"
]
}

Installation de noeud

J'ai ajouté un typings.json avec

{
"globalDependencies": {
"core-js": "registry:dt/core-js#0.0.0+20160602141332",
"jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
"node": "registry:dt/node#6.0.0+20160621231320"
}
}

Et comme je me souviens utilise tsd install. J'ai un dossier appelé typings, Dans ce dossier se trouve un autre dossier appelé node avec un index.d.ts. Je suppose que c'est la même chose qu'un node.d.ts?

Modifier 2

gulp pour frontend (angularjs) et backend (nodejs)

const gulp = require("gulp");
const gutil = require("gulp-util");
const paths = gulp.paths;
var $ = require("gulp-load-plugins")();

const tscConfig = require("../tsconfig.json");

gulp.task("scripts-frontend", function () {
gulp.src(paths.src + "/systemjs.config.js")
.pipe(gulp.dest(paths.out + "/"));

return gulp.src([paths.src + "/frontend/**/*.ts", paths.typings + "/**/*", "!" + paths.src + "/**/*.spec.ts"])
.pipe($.sourcemaps.init())
.pipe($.typescript(tscConfig.compilerOptions))
.pipe($.sourcemaps.write("."))
.pipe(gulp.dest(paths.out + "/frontend/"));
});

gulp.task("scripts-backend", function () {
return gulp.src([paths.src + "/backend/**/*.ts", paths.typings + "/**/*", paths.src + "/server.ts", "!" + paths.src + "/**/*.spec.ts"])
.pipe($.sourcemaps.init())
.pipe($.typescript(tscConfig.compilerOptions))
.pipe($.sourcemaps.write("."))
.pipe(gulp.dest(paths.out + "/backend/"));
});

Réponses:

1 pour la réponse № 1

Je vois que vos extensions de fichiers sont .ts (par exemple. config.ts). Ne pas utiliser var/require dans ses fichiers! C’est particulièrement vrai pour l’introduction d’autres ts des dossiers.

var environment = require("./config/config.js")() devrait être:

import config = require("./config/config.js");
const environment = config();

Et module.exports = function(): string { devrait être :

export = function(): string {

Plus

https://basarat.gitbooks.io/typescript/content/docs/project/external-modules.html