타이프 스크립트 : 문자열과 문자열의 차이점
누구든지 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는 우리에게 유형에 주석을 달고 검사하는 구문을 제공합니다.
String
String.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
에서 클래스가 아닌 인터페이스로 현재 선언되어 있기 때문에 구조적 타이핑은 하위 유형으로 간주되는 첫 번째 행이 컴파일 유형 검사를 통과하는 이유입니다.string
String
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
'IT story' 카테고리의 다른 글
gitgitore가 정확히 무엇입니까? (0) | 2020.05.13 |
---|---|
S3를 통해 Amazon CloudFront에서 gzipped CSS 및 JavaScript 제공 (0) | 2020.05.13 |
IE9 경계 반경 및 배경 그라디언트 출혈 (0) | 2020.05.13 |
Redux-여러 상점, 왜 그렇지 않습니까? (0) | 2020.05.13 |
모바일 브라우저에서 CSS3 100vh가 일정하지 않음 (0) | 2020.05.13 |