IT story

타이프 스크립트 : 문자열과 문자열의 차이점

hot-time 2020. 5. 13. 08:05
반응형

타이프 스크립트 : 문자열과 문자열의 차이점


누구든지 TypeScript에서 문자열과 문자열의 차이점을 알고 있습니까? 그들이 같아야한다고 가정 할 때 정확합니까?

var a: String = "test";
var b: string = "another test";
a = b;
b = a; // this gives a compiler error!

컴파일러의 현재 버전은 다음과 같이 말합니다.

Type 'String' is not assignable to type 'string'.
  'string' is a primitive, but 'String' is a wrapper object.
     Prefer using 'string' when possible.

그게 버그 야?


다음은 차이점을 보여주는 예이며 설명에 도움이됩니다.

var s1 = new String("Avoid newing things where possible");
var s2 = "A string, in TypeScript of type 'string'";
var s3: string;

String새 문자열을 만드는 데 사용할 있는 JavaScript 문자열 유형 입니다. JavaScript에서는 리터럴이 더 나은 것으로 간주되지 않으므로 s2위의 예에서는 new키워드를 사용하지 않고 명시 적으로 String객체를 사용하지 않고 새 문자열을 만듭니다 .

string 변수, 매개 변수 및 리턴 값을 입력하는 데 사용할 수있는 TypeScript 문자열 유형입니다.

추가 참고 사항 ...

현재 (년 2 월 2013) 모두 s1와는 s2자바 스크립트 유효합니다. s3유효한 TypeScript입니다.

의 사용 String. 문자열 리터럴은 문자열을 초기화하는 올바른 방법으로 보편적으로 허용됩니다. JavaScript에서는 객체 리터럴과 배열 리터럴도 사용하는 것이 좋습니다.

var arr = []; // not var arr = new Array();
var obj = {}; // not var obj = new Object();

실제로 문자열에 문제가 있다면 TypeScript에서 두 가지 방법 중 하나로 사용할 수 있습니다 ...

var str: String = new String("Hello world"); // Uses the JavaScript String object
var str: string = String("Hello World"); // Uses the TypeScript string type

두 가지 유형은 JavaScript뿐만 아니라 TypeScript에서도 구별됩니다. TypeScript는 우리에게 유형에 주석을 달고 검사하는 구문을 제공합니다.

StringString.prototype프로토 타입 체인에 있는 객체 인스턴스를 나타냅니다 . 당신은 여러 가지 방법이 예에서 이러한 경우를 얻을 수 new String('foo')Object('foo'). 연산자 를 사용하여 String유형 의 인스턴스를 테스트 할 수 있습니다 ( instanceof예 :) myString instanceof String.

string은 JavaScript의 기본 유형 중 하나이며 string값은 주로 리터럴 (예 : 'foo'"bar")을 사용하여 다양한 함수 및 연산자의 결과 유형으로 작성됩니다. string사용하여 유형을 테스트 할 수 있습니다 typeof myString === 'string'.

대부분의 시간 string은 사용해야하는 유형입니다. 문자열을 가져 오거나 반환하는 거의 모든 API 인터페이스가이를 사용합니다. 모든 JS 프리미티브 유형은 속성에 액세스하거나 메소드를 호출하는 등의 객체로 사용할 때 해당 객체 유형 으로 래핑 ( boxed )됩니다. TypeScript의 핵심 라이브러리String 에서 클래스가 아닌 인터페이스로 현재 선언되어 있기 때문에 구조적 타이핑은 하위 유형으로 간주되는 첫 번째 행이 컴파일 유형 검사를 통과하는 이유입니다.stringString


JavaScript에서 문자열은 문자열 기본 유형이거나 문자열 객체 일 수 있습니다. 다음 코드는 차이점을 보여줍니다.

var a: string = 'test'; // string literal
var b: String = new String('another test'); // string wrapper object

console.log(typeof a); // string
console.log(typeof b); // object

오류 :

'string'유형은 'string'유형에 지정할 수 없습니다. 'string'은 기본이지만 'String'은 래퍼 객체입니다. 가능하면 'string'을 사용하십시오.

유형 string을 문자열 객체 유형 ( new키워드 를 통해 생성됨) 에 지정하려고했기 때문에 TS 컴파일러에서 발생합니다 . 컴파일러는 string문자열 기본 유형에만 유형을 사용해야하며 문자열 객체 유형을 설명하는 데이 유형을 사용할 수 없다고 알려줍니다 .

참고 URL : https://stackoverflow.com/questions/14727044/typescript-difference-between-string-and-string

반응형