유형 매개 변수를 작성하려고 number
했지만 유형을 잘못 입력하여 Number
대신 작성 했습니다.
내 IDE (JetBrains WebStorm)에서 유형 Number
은 기본 유형에 사용되는 것과 동일한 색상으로 작성 number
되지만 클래스 이름 (알려 졌거나 알려지지 않음)을 쓰면 다른 색상을 사용하므로 어떻게 든 인식 할 수 있습니다. 철자가 틀린 유형을 올바른 / 거의 정확한 / 정확한 유형으로.
예를 들어 컴파일러 Number
가라는 클래스를 찾을 수 없다고 불평하는 대신 코드를 컴파일 할 때 TSC는 다음 오류 메시지를 작성합니다.
Illegal property access
그것은 그것 number
과 Number
둘 다 다른 유형으로 공존 한다는 것을 의미합니까 ?
이것이 사실이라면 그 클래스의 차이점은 무엇입니까?
그렇지 않은 경우 알 수없는 클래스에 대해 표시되는 것과 동일한 오류 메시지를 작성하지 않은 이유입니다 ( “현재 범위에 ‘번호’이름이 없습니다.”).
다음은 코드입니다.
class Test
{
private myArray:string[] = ["Jack", "Jill", "John", "Joe", "Jeff"];
// THIS WORKS
public getValue(index:number):string
{
return this.myArray[index];
}
// THIS DOESN'T WORK: ILLEGAL PROPERTY ACCESS
public getAnotherValue(index:Number):string
{
return this.myArray[index];
}
}
답변
JavaScript에는 기본 유형 (숫자, 문자열 등)과 객체 유형 (런타임에 매니페스트되는 숫자, 문자열 등) 의 개념이 있습니다 . TypeScript 유형을 지정 number
하고 Number
각각 참조하십시오. 자바 스크립트는 일반적으로 객체 유형을 해당 기본 유형으로 강제 변환하거나 그 반대의 경우도 마찬가지입니다.
var x = new Number(34);
> undefined
x
> Number {}
x + 1
> 35
TypeScript 유형 시스템 규칙은이를 다음과 같이 처리합니다 (사양 섹션 3.7).
하위 유형, 상위 유형 및 할당 호환성 관계를 확인하기 위해 Number, Boolean 및 String 기본 유형은 각각 ‘Number’, ‘Boolean’및 ‘String’인터페이스와 동일한 속성을 가진 객체 유형으로 처리됩니다.
답변
TypeScript Do ‘s and Don’ts의 지침으로 Ryan의 답변을 보강하려면 다음을 수행하십시오.
하지 마십시오 적 유형을 사용
Number
,String
,Boolean
,Symbol
, 또는Object
이 유형은 거의 자바 스크립트 코드를 적절하게 사용되지 않습니다 비 원시적 박스 객체를 참조하십시오.
/* WRONG */ function reverse(s: String): String;
마 유형을 사용
number
,string
,boolean
,와symbol
.
/* OK */ function reverse(s: string): string;
답변
TypeScript 문서에 따르면 다음과 같습니다.
var Number: NumberConstructor
(value?: any) => number
모든 종류의 숫자를 나타내는 개체입니다. 모든 JavaScript 숫자는 64 비트 부동 소수점 숫자입니다.
말했듯이 any
매개 변수로 취하고 숫자를 반환하거나null
값이 숫자인지 아닌지 쉽게 확인할 수 있습니다.
Number("1234"); // 1234
Number("1234.54") // 1234.54
Number("-1234.54") // -1234.54
Number("1234.54.33") // null
Number("any-non-numeric") // null
따라서 다음과 같이 번호를 확인하는 데 사용할 수 있습니다.
if(Number(val)){
console.log('val is a number');
} else {
console.log('Not a number');
}