String 타입과 String 타입의 차이점은 무엇입니까?
이 두 가지 차이점이 뭔지 아는 사람?String ★★★★★★★★★★★★★★★★★」stringTypeScript 있있 ? type?그들이 같아야 한다고 생각하는 것이 맞습니까?
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 String 유형입니다.이 유형을 사용하여 새 문자열을 만들 수 있습니다.JavaScript에서는 리터럴이 더 낫다고 생각되므로 아무도 그렇게 하지 않습니다.s2에서는 '신규 스트링'을 사용하지 않고 을 만듭니다.new하고, 으로 「」를 하지 않습니다.String★★★★★★ 。
string는 TypeScript 문자열 유형으로 변수, 파라미터 및 반환값을 입력할 때 사용할 수 있습니다.
추가 메모...
2013년) 둘 다(2013년 2월) ★★★★★★★★★★★★★★★★★★★★★★★★★★★s1 ★★★★★★★★★★★★★★★★★」s2자바스크립트 s3타이프 스크립트
「」의 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 operator:myString instanceof String.
string는 JavaScript의 유형 중 이며 JavaScript는 다음과 같습니다.string 리터럴로 됩니다).'foo' ★★★★★★★★★★★★★★★★★」"bar"다양한 함수 및 연산자의 결과 유형입니다.「 」의 테스트를 할 수 .string 사용하여 타이핑하다typeof myString === 'string'.
대부분의 경우,string사용하는 타입입니다.스트링을 수신하거나 반환하는 거의 모든 API 인터페이스가 사용합니다.모든 JS 프리미티브 타입은 오브젝트로 사용할 때 대응하는 오브젝트 타입으로 래핑(박스화)됩니다.예를 들어 속성이나 호출 메서드에 액세스 합니다.부터String현재 TypeScript의 핵심 라이브러리에서 클래스가 아닌 인터페이스로 선언되어 있습니다.구조적인 타이핑은 다음과 같은 것을 의미합니다.string의 하위 유형으로 됩니다.String그래서 첫 번째 라인이 컴파일 유형 검사를 통과합니다.
빠른 독자의 경우:
그런 타입은 절대 사용하지 마세요.
Number,String,Boolean,Symbol, 「」Object자바스크립트(JavaScript)
출처 : https://www.typescriptlang.org/docs/handbook/declaration-files/do-s-and-don-ts.html
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키워드를 지정합니다.에서 '을 쓰라'고.string문자열 기본 유형에 대해서만 이 유형을 사용하여 문자열 개체 유형을 설명할 수 없습니다.
스크립트 유형:String »string
'String' 형식의 인수는 'string' 형식의 매개 변수에 할당할 수 없습니다.
'string'은 프리미티브이지만 'String'은 래퍼 객체입니다.
가능하면 'string'을 사용하는 것이 좋습니다.
데모
문자열 객체
// error
class SVGStorageUtils {
store: object;
constructor(store: object) {
this.store = store;
}
setData(key: String = ``, data: object) {
sessionStorage.setItem(key, JSON.stringify(data));
}
getData(key: String = ``) {
const obj = JSON.parse(sessionStorage.getItem(key));
}
}
스트링 프리미티브
// ok
class SVGStorageUtils {
store: object;
constructor(store: object) {
this.store = store;
}
setData(key: string = ``, data: object) {
sessionStorage.setItem(key, JSON.stringify(data));
}
getData(key: string = ``) {
const obj = JSON.parse(sessionStorage.getItem(key));
}
}
간단한 답변:
string('의 유형) // string=> seconsole.log foo'의 // 는 console.log foo'의 유형입니다.String=>는 문자열을 작성 및 조작하는 몇 가지 메서드를 가진 객체입니다.
유형이 .strings, numbers, booleans, null, undefined, symbol, and bigint처음 5개는 초기부터 존재해 왔으며, ES2015에 primitive라는 기호가 추가되었으며, bigint는 현재 완성 단계에 있다.
원시 요소는 불변하고 메서드가 없기 때문에 개체와 구별됩니다.문자열에 메서드가 있는 것에 이의를 제기할 수 있습니다.
console.log('primitive'.charAt(3)) // output is "m"
문자열 프리미티브에는 메서드가 없지만 JavaScript에는 메서드가 있는 문자열 오브젝트 타입도 정의되어 있습니다.JavaScript는 이들 유형을 자유롭게 변환합니다.문자열 프리미티브에서 charAt와 같은 메서드에 액세스하면 JavaScript는 이 메서드를 String 개체로 랩하고 메서드를 호출한 다음 개체를 버립니다.
TypeScript는 프리미티브와 그 오브젝트래퍼에 대해 다른 타입을 갖는 것으로 이 구별을 모델화합니다.
- 스트링과 스트링
- 번호 및 번호
- 부울과 부울
- 기호 및 기호
- Bigint 및 BigInt
될 것 요.Stringstring단, 컴파일러에 의해 오류가 발생하는 경우가 있습니다.
바와 같이, '우리'는 '우리'입니다.string할 수 .String, 그러나 String 할 수 없습니다. string.
에러 메세지의 지시에 따라서, 스트링을 계속합니다.TypeScript와 함께 제공되는 모든 형식 선언은 다른 거의 모든 라이브러리의 타이핑과 마찬가지로 이 형식을 사용합니다.
- string == > 프리미티브 데이터 타입.
- 문자열 == > 비표준.오브젝트이며 String 클래스의 메서드와 속성에 액세스할 수 있습니다.
제 개인적인 언급에 의하면
string자바스크립트String이 ; 로 표시됩니다.String classString 클래스에 대한 자세한 내용은 이 짧은 기사를 참조하십시오.
선호하다string에 걸쳐서String
이 오류 메시지는 String 유형의 변수 또는 파라미터에 String 유형의 값을 할당하려고 함을 나타냅니다.TypeScript에서 String은 일련의 문자를 나타내는 원시 유형이며 String은 문자열 작업을 위한 추가 메서드를 제공하는 래퍼 개체입니다.
오류 메시지는 문자열 유형이 더 효율적이고 관련 오버헤드비용이 적기 때문에 가능한 한 String 대신 String 유형을 사용해야 함을 나타냅니다.이는 String이 객체이기 때문에 JavaScript(따라서 TypeScript) 내의 객체는 힙에 저장되며 생성 시 추가 메모리 할당이 필요하기 때문입니다.반면 문자열 값은 스택에 직접 저장되므로 보다 효율적으로 사용할 수 있습니다.
이 오류를 수정하려면 예상되는 모든 위치에서 String이 아닌 String 유형을 사용해야 합니다.코드 내의 String을 String으로 치환하기만 하면 됩니다.예를 들어 String 유형의 변수가 있는 경우 다음과 같은 유형의 문자열로 변경할 수 있습니다.
let myString: String = "hello, world!"; // Incorrect
let myString: string = "hello, world!"; // Correct
또한 일반적으로 String보다는 String을 사용하는 것이 더 효율적이고 사용하기 쉽기 때문에 가능한 한 String을 사용하는 것이 좋습니다.
언급URL : https://stackoverflow.com/questions/14727044/what-is-the-difference-between-types-string-and-string
'source' 카테고리의 다른 글
| JavaScript는 JSON 어레이를 통해 루프합니까? (0) | 2023.04.03 |
|---|---|
| 사용자 지정 jQuery가 Wordpress Ninja Forms 플러그인에서 작동하지 않음 (0) | 2023.04.03 |
| pymongo를 사용하여 값을 업데이트하려면 어떻게 해야 합니까? (0) | 2023.04.03 |
| 다중 사용자 Ajax 웹 응용 프로그램을 동시에 안전하게 설계하는 방법 (0) | 2023.04.03 |
| Json Schema 유효성 검사: 스키마에 선언된 필드 이외의 필드를 허용하지 않습니다. (0) | 2023.04.03 |
