programing

TS 오류:'string' 형식이 배열 형식이나 문자열 형식이 아닙니다.어떻게 끈이 끈이 아닌가요?

firstcheck 2023. 6. 22. 23:46
반응형

TS 오류:'string' 형식이 배열 형식이나 문자열 형식이 아닙니다.어떻게 끈이 끈이 아닌가요?

TS에서 이상한 오류 발생:

오류: (125, 18) TS2569: 'string' 형식이 배열 형식이나 문자열 형식이 아닙니다.컴파일러 옵션 '--downlevelIteration'을 사용하여 반복기를 반복할 수 있습니다.

왜 끈은 끈이 아닌가요?

TS가 문자열에 대한 스프레드 연산자를 어떻게 컴파일할지 알고 싶습니다.

브라우저 콘솔의 내 코드.문자열은 다음 문자로 분할됩니다.

> s = 'abcdef';
> r = [...s];
< (6) ["a", "b", "c", "d", "e", "f"]

TS의 내 코드:

const s: string = 'abcdef';
const res = [...s]; // <= Error: Type 'string' is not an array type or a string type
console.log(res);

왜요?

TS 버전:

  "dependencies": {
    "typescript": "^3.5.3"
  }

업데이트:

@V to Colleone A 스크린샷

업데이트:

나의tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "downlevelIteration": false,
    "allowJs": true,
    "skipLibCheck": false,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "alwaysStrict": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": false,
    "noEmit": false,
    "sourceMap": true,
    "baseUrl": "./",
    "jsx": "preserve"
  },
  "compileOnSave": true,
  "files": [
    "sample.ts"
  ],
  "exclude": [
    "node_modules",
    "**/*.spec.ts"
  ]
}

Heretic Monkey의 코멘트를 확대하기 위해:

대상 변경es5로.es2015또는es6문제를 해결합니다.여기 내 배가 불러요.tsconfig.json명확성을 위해:

{
  "compilerOptions": {
    "target": "es2015",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "noEmit": true,
    "esModuleInterop": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "jsx": "preserve",
  },
  "exclude": [
    "node_modules"
  ],
  "include": [
    "next-env.d.ts",
    "**/*.ts",
    "**/*.tsx"
  ]
}

작업 예제

참고 사항:"downlevelIteration": true또한 그것을 고쳤지만, 그것은 나에게 올바른 해결책인 것 같지 않습니다.

Angular-CLI(8)가 있습니다. - 이 경우 수정.tsconfig.json본조로"target": "es2015"(또는 es2018) 전혀 도움이 되지 않습니다.추가만"downlevelIteration": true도움이 됩니다. 여기 제 모든 파일이 있습니다.

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "module": "esnext",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "importHelpers": true,
    "downlevelIteration": true,
    "target": "es2015",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2018",
      "dom"
    ]
  }
}

언급URL : https://stackoverflow.com/questions/56990364/ts-error-type-string-is-not-an-array-type-or-a-string-type-how-a-string-is-n

반응형