TypeScript 파일에“엄격한 사용”이 필요하십니까?


126

TypeScript 코드 파일에서 "엄격한 사용"행을 어디에 두어야하는지에 대한 게시물을 보았습니다. 내 질문은, 왜 전혀 없습니까?

TypeScript는 이미 강력한 유형의 언어이므로 "엄격한 사용"은 무엇을 추가합니까?



12
제공 한 링크는 JavaScript 파일에서 "엄격한 사용"을 정의합니다. 내 질문은 TypeScript 및 Typescript 가능 편집기가 "엄격한 사용"이 잡을 수있는 대부분의 / 모든 (?) 문제를 포착하는 TypeScript 파일에서 여전히 유용 / 필요한지 여부입니다.
DeborahK

ES6에 빌드 한 다음 Babel과 같은 것을 사용하는 경우에도 필요합니다. 생성 된 스크립트에 다음이 포함되어야합니다."use strict";
BrunoLM

TS 파일에 넣지 말고 tsconfig.json --alwaysStrict : Parse에서 엄격 모드로 플래그를 추가하고 각 소스 파일에 대해 "strict strict"를 사용하십시오
Drenai

답변:


107

업데이트

  • TypeScript 1.8+ : "use strict";는 모듈에서 생성됩니다 ( 더 읽기 ).
  • TypeScript 2.1+ : --alwaysStrict컴파일러 옵션은 모든 파일을 엄격 모드로 구문 분석 "use strict"하고 출력 된 모든 파일의 맨 위에서 방출 합니다 ( 더 읽기 ).

"엄격 모드"에 대한 TypeScript의 테스트를 검색하여 몇 가지 예제 목록을 찾을 수 있습니다.

다음은 컴파일 타임 오류 만 발생하는 코드 예제입니다 "use strict";.

// future reserved keyword not allowed as variable name
var let,
    yield,
    public,
    private,
    protected,
    static,
    implements;

// "delete" cannot be called on an identifier
var a;
delete a;

// octal literals not allowed
03;

"use strict";런타임에만 오류가 발생 하는 몇 가지 예가 더 있습니다 . 예를 들면 다음과 같습니다.

"use strict";
delete Object.prototype;

개인적으로, TypeScript에서 실수를 저 지르지 못하게하는 데 유용한 모든 것을 찾지 못했습니다. 파일에 추가되는 소음으로 인해 파일을 쓰지 않아도됩니다. TS 2.1부터는 --alwaysStrict코드 유지 관리 오버 헤드없이 약간의 추가 엄격 성을 추가하기 때문에 컴파일러 옵션을 활성화합니다 .


TypeScript 단위 테스트에서이 문제를 해결하십시오. 제가 그것을 확인해 보겠습니다. 예제 주셔서 감사합니다. 그리고 더 이상 TypeScript의 "코딩 표준"에 포함시키지 않을 것에 동의합니다.
DeborahK

외부 모듈을 사용하는 경우 use strictTS 파일의 맨 위에 선언 된 문자열이 파일의 맨 대신에 모듈 함수에 나타날 수 있으므로 의미가 약간 변경 될 수 있습니다.
billc.cn

내 컴퓨터에서 TypeScript 1.4는 ECMAScript 5 이상을 대상으로 할 때 8 진 리터럴을 허용하지 않습니다."use strict;"
Jeremy

18

내 돈 들어, ,"use strict"; 타이프 라이터 파일에 포함되어야한다.

컴파일 시간 무시"use strict";Typescript에 효과를 생성 된 Javascript가 실행될 때 런타임에 영향을 줄 수 있습니다.

  • MDN은 성능 향상을 식별합니다this 은 함수 호출에서 권투를 피하고 function.caller및 및 function.arguments속성을 제거하는 을 합니다.

  • 모질라의 제프 월든 (Jeff Walden) 도이 답변 에서 성능 향상 기회를 암시했다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.