typescript 错误TS2403:后续变量声明必须具有相同的类型

dpiehjr4  于 2022-12-30  发布在  TypeScript
关注(0)|答案(2)|浏览(252)

错误

我得到这个打字错误:
错误TS2403:后续变量声明必须具有相同的类型。变量"environment"的类型必须为"string",但此处的类型为"any"。

代码

软件包. json

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

服务器. ts

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

./配置/配置ts

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

问题:

我需要做什么,才能将函数的返回值识别为string

编辑

配置文件

{
  "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"
  ]
}

安装节点

我添加了一个typings.json

{
  "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"
  }
}

我记得使用tsd install,我有一个文件夹叫typings,在那个文件夹里有另一个文件夹叫node,有一个index.d.ts,我想这和node.d.ts是一样的吧?

编辑2

前端(Angular j)和后端(节点j)的 Gulp

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/'));
});
qoefvg9y

qoefvg9y1#

在我的示例中,触发AbortSignal类型声明错误的是@types/node

  • 在我的一些项目中,**全新(重新)安装@types/node**修复了这个bug。
  • 在其他一些版本中,我卸载了可能是重复的@types/node。这样做并没有改变我的开发工作流(不知道为什么我首先安装它:-/)
a0zr77ik

a0zr77ik2#

我看到你的文件扩展名是.ts(例如config.ts)。不要在ts文件中使用var/require!尤其是在引入其他ts文件时。
var environment = require('./config/config.js')()应为:

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

并且module.exports = function(): string {应该是:

export = function(): string {

更多

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

相关问题