programing

Typescript primitive type: type "number" 와 "Number" (TSC는 대소문자를 구분하지 않습니다)의 차이점이 있습니까?

codeshow 2023. 3. 13. 20:43
반응형

Typescript primitive type: type "number" 와 "Number" (TSC는 대소문자를 구분하지 않습니다)의 차이점이 있습니까?

나는 타입의 파라미터를 쓰려고 했다.number그런데 타이프를 틀렸어요, 라고 쓰고 있어요.Number대신.

IDE(JetBrains WebStorm)에서 다음을 입력합니다.Number원시 활자에 사용된 것과 같은 색으로 쓰여져 있다number그러나 클래스 이름(알고 있는 것과 모르는 것)을 쓰면 다른 색을 사용하기 때문에, 왠지 철자가 틀린 것을 올바른/거의 정확/정확한/정확한 유형으로 인식하고 있는 것 같습니다.

예를 들어 컴파일러가 다음과 같은 이름의 클래스를 찾을 수 없다고 불평하는 대신 코드를 컴파일할 때NumberTSC는 다음 오류 메시지를 기록합니다.

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]; 
    }
}

TypeScript Do 및 Don'ts의 지침에 따라 Ryan의 답변을 늘리려면:

그런 타입은 절대 사용하지 마세요.Number,String,Boolean,Symbol, 또는Object이러한 유형은 JavaScript 코드에서 거의 적절하게 사용되지 않는 비 프라이머리 박스형 개체를 나타냅니다.

/* WRONG */
function reverse(s: String): String;

유형을 사용합니다.number,string,boolean,그리고.symbol.

/* OK */
function reverse(s: string): string;

JavaScript에는 원시 유형(숫자, 문자열 등)과 객체 유형(실행 시 매니페스트인 숫자, 문자열 등)의 개념이 있습니다.TypeScript 유형number그리고.Number각각 참조해 주세요.JavaScript는 보통 오브젝트 타입을 원시적인 동등한 오브젝트로 강제하거나 그 반대로 강제합니다.

var x = new Number(34);
> undefined
x
> Number {}
x + 1
> 35

TypeScript 유형의 시스템 규칙은 다음과 같이 처리합니다(스펙 섹션 3.7).

하위 유형, 슈퍼 유형 및 할당 호환성 관계를 결정하기 위해 Number, Boolean 및 String 원시 유형은 각각 'Number', 'Boolean' 및 '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');
}

언급URL : https://stackoverflow.com/questions/15487220/typescript-primitive-types-any-difference-between-the-types-number-and-numbe

반응형