programing

TypeScript | Array.from | 오류 TS2339: 'from' 속성이 'ArrayConstructor' 유형에 없습니다.

lastcode 2023. 7. 6. 22:15
반응형

TypeScript | Array.from | 오류 TS2339: 'from' 속성이 'ArrayConstructor' 유형에 없습니다.

나는 구글링을 하고 있었지만, 다음과 같은 ES6 방법을 사용할 수 있도록 하기 위해 내 프로젝트에 무엇을 어떻게 추가해야 하는지 정보를 찾을 수 없습니다.Array.from

__ EDIT: 프로토타입 워드 제거

런타임에 엔진에 API가 존재하는 것이 확실하다면 다음을 사용하여 컴파일하십시오.--lib es6(또는)--lib dom,es6DOM API를 사용하는 경우).

자세한 내용은 컴파일러 옵션 설명서를 참조하십시오.

다음과 같이 기존 유형을 쉽게 확장할 수 있습니다.

interface Array {
    from(arrayLike: any, mapFn?, thisArg?): Array<any>;
}

여기서 문제는 이 기능이 필요한 정적 기능이 아니라 어레이 인스턴스에 추가된다는 것입니다.
그러나 이는 다음과 같이 수행될 수 있습니다.

interface ArrayConstructor {
    from(arrayLike: any, mapFn?, thisArg?): Array<any>;
}

그러면 당신은 사용할 수 있을 것입니다.Array.from.

Playground에서 사용해 보세요.


편집

실행하려는 환경에 구현이 없기 때문에 다중 구성이 필요한 경우 다음과 같습니다.

interface ArrayConstructor {
    from(arrayLike: any, mapFn?, thisArg?): Array<any>;
}

Array.from = function(arrayLike: any, mapFn?, thisArg?): Array<any> {
    // place code from MDN here
}

MDN의 폴리필 코드입니다.


2차 편집

댓글을 기반으로 타이핑된 버전을 추가합니다.

interface ArrayConstructor {
    from<T, U>(arrayLike: ArrayLike<T>, mapfn: (v: T, k: number) => U, thisArg?: any): Array<U>;
    from<T>(arrayLike: ArrayLike<T>): Array<T>;
}

lib.es6.d.ts에 정의된 방식과 정확한 사본입니다.

나는 그것이 심각하게 주제에서 벗어났으면 좋겠지만, 나는 이것을 jstots를 리팩터링하는 동안 발견했고, 만약 당신이 같은 배열을 가지고 있다면, 그것은 from을 사용하는 대신에 단순히 생성자에게 배열을 전달하는 것으로 보여 추가적인 방법의 필요성을 제거합니다.

예를 들어

// someScript.js

Array.from( arrayLikeThing );

된다

// someScript.ts

Array( arrayLikeThing );

.를 계속 사용해야 하는 다른 이유가 있다면 위의 답변이 좋습니다.

아래 줄이 컴파일러 내부의 tsconfig.json에 추가되었습니다 옵션이 해결되었습니다.

"lib": [DOM", "ES2015.코어", "DOM".참을 수 있다", "ES2015.컬렉션", "ES2015.Itable", "ES2015" ]

언급URL : https://stackoverflow.com/questions/36713651/typescript-array-from-error-ts2339-property-from-does-not-exist-on-type

반응형