84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
사용자 지정 오류를 발생시키고 "Error" 대신 "CustomError" 클래스 이름을 콘솔에 인쇄하려고 했지만 성공하지 못했습니다.
출력은 Uncaught Error: Load "foo" very pain.
Uncaught Error: Load "foo" very pain
내가 기대한 것: Uncaught CustomError:Lorem“foo”ipsum dolor.
Uncaught CustomError:Lorem“foo”ipsum dolor
TS만 사용하여(JS 프로토타입을 건드리지 않고) 수행할 수 있는지 궁금합니다.
문제는 super 并且该新对象没有预期的原型链,即它是 Error 的实例,而不是 CustomError 인스턴스를 호출할 때입니다.
super
Error
CustomError
이 문제는 Typescript 2.2부터 지원되는 'new.target'을 사용하여 우아하게 해결할 수 있습니다. 여기를 참조하세요: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html
new.target 的优点是您不必对原型进行硬编码,就像这里提出的其他一些答案一样。这又具有一个优点,即从 CustomError을 사용하여 상속된 클래스도 자동으로 올바른 프로토타입 체인을 가져옵니다.
new.target
프로토타입을 하드코딩하려는 경우(예: Object.setPrototype(this, CustomError.prototype)),CustomError 本身将有一个工作原型链,但任何类从 CustomError 继承将会被破坏,例如class VeryCustomError 的实例不会是预期的 instanceof VeryCustomError,而只是 instanceof CustomError.
Object.setPrototype(this, CustomError.prototype)
class VeryCustomError 的实例不会是预期的 instanceof VeryCustomError,而只是 instanceof CustomError.
instanceof VeryCustomError
instanceof CustomError
참조: https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200
typescript 버전 2.1을 사용하고 있으며 ES5로 변환 중이신가요? 가능한 문제와 해결 방법은 주요 변경 사항 페이지의 이 섹션을 확인하세요. https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error -array -그리고 지도는 더 이상 일하지 않을 수 있습니다
관련 비트:
문제는
super
并且该新对象没有预期的原型链,即它是Error
的实例,而不是CustomError
인스턴스를 호출할 때입니다.이 문제는 Typescript 2.2부터 지원되는 'new.target'을 사용하여 우아하게 해결할 수 있습니다. 여기를 참조하세요: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html
으아아아new.target
的优点是您不必对原型进行硬编码,就像这里提出的其他一些答案一样。这又具有一个优点,即从CustomError
을 사용하여 상속된 클래스도 자동으로 올바른 프로토타입 체인을 가져옵니다.프로토타입을 하드코딩하려는 경우(예:
Object.setPrototype(this, CustomError.prototype)
),CustomError
本身将有一个工作原型链,但任何类从CustomError
继承将会被破坏,例如class VeryCustomError 的实例不会是预期的
instanceof VeryCustomError
,而只是instanceof CustomError
.참조: https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200
typescript 버전 2.1을 사용하고 있으며 ES5로 변환 중이신가요? 가능한 문제와 해결 방법은 주요 변경 사항 페이지의 이 섹션을 확인하세요. https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error -array -그리고 지도는 더 이상 일하지 않을 수 있습니다
관련 비트: