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 № 1Je 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