특정 회선의 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
'source' 카테고리의 다른 글
Foreach 루프에서 어레이 값 설정 해제 (0) | 2022.10.30 |
---|---|
원치 않는 동작에 대한 VueJs v- (0) | 2022.10.30 |
항목을 특정 인덱스의 배열에 삽입하는 방법(JavaScript) (0) | 2022.10.30 |
이 케이스가 NULL을 반환하는 이유는 무엇입니까? (0) | 2022.10.30 |
문자열의 여러 서브스트링을 대체하려면 어떻게 해야 합니까? (0) | 2022.10.30 |