source

특정 회선의 ts 규칙을 비활성화하려면 어떻게 해야 합니까?

lovecheck 2022. 10. 30. 17:59
반응형

특정 회선의 ts 규칙을 비활성화하려면 어떻게 해야 합니까?

Summernote는 jQuery 플러그인이기 때문에 유형 정의는 필요 없습니다.오브젝트를 수정하고 싶을 뿐인데 TS가 계속 에러를 던지고 있습니다.아래 행은 여전히 "Property 'summernote' does not exist on 'jQueryStatic'" 오류를 표시합니다.

(function ($) {

  /* tslint:disable */
  delete $.summernote.options.keyMap.pc.TAB;
  delete $.summernote.options.keyMap.mac.TAB;
  /* tslint:enable */

})(jQuery)

편집:

여기 tsconfig.json이 있습니다.

{
  "compilerOptions": {
    "outDir": "./dist/",
    "sourceMap": true,
    "noImplicitAny": true,
    "module": "commonjs",
    "target": "es5",
    "allowJs": true,
    "noUnusedParameters": true
  },
  "include": [
      "js/**/*"
  ],
  "exclude": [
      "node_modules",
      "**/*.spec.ts"
  ]
}

Typescript 2.6 에서는, 특정의 행에 대해서 컴파일러 에러/경고를 바이패스 할 수 있게 되었습니다.

if (false) {
    // @ts-ignore: Unreachable code error
    console.log("hello");
}

공식 문서는 "[이것]을(를) 매우 적게 사용할 을 유의하십시오.캐스팅은 거의 항상 하는 것이 좋다.any그 대신 더 나은 의도를 표현하기 때문입니다.


오래된 답변:

사용할 수 있습니다./* tslint:disable-next-line */로컬로 tslint를 디세블로 합니다.다만, 이것은 컴파일러 에러이기 때문에, tslint 를 무효로 해도 도움이 되지 않습니다.

언제든지 임시 캐스팅이 가능합니다.$로.any:

delete ($ as any).summernote.options.keyMap.pc.TAB

원하는 모든 자산에 액세스할 수 있습니다.

@ts-expect-error

TypeScript 3.9는 새로운 마법 코멘트를 도입했습니다. @ts-expect-error의 내용:

  • 와 같은 기능을 가지다
  • 실제로 억제된 컴파일러 오류가 없는 경우 오류를 트리거합니다(=는 쓸모 없는 플래그를 나타냅니다).
if (false) {
  // @ts-expect-error: Let's ignore a compile error like this unreachable code 
  console.log("hello"); // compiles
}

// If @ts-expect-error didn't suppress anything at all, we now get a nice warning 
let flag = true;
// ...
if (flag) {
  // @ts-expect-error
  // ^~~~~~~~~~~~~~~^ error: "Unused '@ts-expect-error' directive.(2578)"
  console.log("hello"); 
}

놀이터.


TypeScript 개발자는 무엇을 추천합니까?

@ts-ignore그리고.@ts-expect-error컴파일 오류에 대한 큰 망치와 같습니다.TypeScript 개발자는 대부분의 경우 보다 세밀하고 좁은 범위의 타입 시스템 솔루션을 권장합니다.

ts-ignore를 추가한 이유는 기존 유형의 시스템 메카니즘으로는 억제할 수 없는 나머지 5%에 대해 사용할 수 있기 때문입니다.[...] 극히 일부입니다.ts-ignore코드베이스 [.] - Microsoft/TypeScript #19139

[...] 기본적으로는 TypeScript에서 억제를 사용하면 안 된다고 생각합니다.유형 문제일 경우 이를 폐기할 수 있습니다(그렇기 때문에).any, casting 및 shorthand module 선언이 존재합니다).구문의 문제라면 모든 것이 끔찍하고 어차피 망가질 것이기 때문에 억제는 아무것도 할 수 없습니다(억제는 해석 오류에 영향을 주지 않습니다).(Microsoft/TypeScript #19573


질문 케이스의 대체 방법

▶ 사용형태

// type assertion for single expression
delete ($ as any).summernote.options.keyMap.pc.TAB;

// new variable assignment for multiple usages
const $$: any = $
delete $$.summernote.options.keyMap.pc.TAB;
delete $$.summernote.options.keyMap.mac.TAB;

증강 JQueryStatic인터페이스

// ./global.d.ts
interface JQueryStatic {
  summernote: any;
}

// ./main.ts
delete $.summernote.options.keyMap.pc.TAB; // works

다른 경우, 속기 선언/증가는/확장 가능한 유형이 없는 모듈을 컴파일하는 데 유용한 유틸리티입니다.실행 가능한 전략은 아직 이행되지 않은 코드를 via 및 컴파일러 플래그로 유지한 채 TypeScript로 단계적으로 이행하는 것입니다.

바로 할 수 .// @ts-ignore

하였습니다.// @ts-ignore:next-line에러 직전입니다.

★★★★★★★★★를 사용하고 있는 경우는eslint 또는 하려면 , 의 맨 으로, 로 할 수 .

// eslint-disable-next-line @typescript-eslint/<RELEVANT_ESLINT_RULE>

언급URL : https://stackoverflow.com/questions/43618878/how-to-disable-a-ts-rule-for-a-specific-line

반응형