TypeScript의'window'에 새 속성을 명시적으로 설정하는 방법은 무엇입니까?
I setup global namespaces for my objects by explicitly setting a property on
window
. 나는 window
에서 현식 설정 속성을 통해 대상에게 전역 명칭 공간을 설정한다.window.MyNamespace = window.MyNamespace || {};
TypeScript underlines
MyNamespace
and complains that: TypeScript는 MyNamespace
을 강조하며 불평합니다.The property'My Namespace'does not exist on value of type'window'any'속성'My Namespace'는'window'형식의 값에 존재하지 않습니다. '
I can make the code work by declaring
MyNamespace
as an ambient variable and dropping the window
explicitness but I don't want to do that. 나는 MyNamespace
을 환경 변수로 성명하고 window
의 현식성을 삭제함으로써 코드를 정상적으로 작동시킬 수 있지만, 나는 이렇게 하고 싶지 않다.declare var MyNamespace: any;
MyNamespace = MyNamespace || {};
How can I keep
window
in there and make TypeScript happy? window
을 보관하고 TypeScript를 만족하는 방법은 무엇입니까?As a side note I find it especially funny that TypeScript complains since it tells me that
window
is of type any
which by definitely can contain anything. 덧붙인 설명으로 나는 TypeScript의 불평이 매우 재미있다는 것을 발견했다. 왜냐하면 그것은 나에게 window
이 any
유형이고 window
은 틀림없이 어떤 내용을 포함할 수 있다는 것을 알려주었기 때문이다.#1층
참조:https://stackoom.com/question/rKD4/TypeScript의 -window - 새 속성을 명시적으로 설정하는 방법
#2층
Just found the answer to this in another StackOverflow question's answer . 방금 다른 Stack Overflow 문제의 답안에서 답을 찾았습니다.
declare global {
interface Window { MyNamespace: any; }
}
window.MyNamespace = window.MyNamespace || {};
Basically you need to extend the existing
window
interface to tell it about your new property. 기본적으로 기존 window
인터페이스를 확장하여 새로운 속성을 소개해야 합니다.#3층
AS OF TYPESCRIPT ^3.4.3 THIS SOLUTION NO LONGER WORKS 는 TYPESCRIPT ^ 3.4.3 까지 솔루션이 작동하지 않음
Or... 아니면...
you can just type: 다음을 입력할 수 있습니다.
window['MyNamespace']
and you wont get a compile error and it works the same as typing
window.MyNamespace
및 컴파일 오류 없음#4층
The accepted answer is what I used to use, but with TypeScript 0.9.* it no longer works. 받아들일 수 있는 답은 내가 사용하던 답이지만 TypeScript 0.9을 사용합니다.*시, 그것은 더 이상 작용하지 않을 것이다.The new definition of the
window.MyNamespace
interface seems to completely replace the built-in definition, instead of augmenting it. Window
인터페이스의 새로운 정의는 내장된 정의를 완전히 대체한 것 같지 않고 확장된 것 같다.I have taken to doing this instead: 이렇게 하겠습니다.
interface MyWindow extends Window {
myFunction(): void;
}
declare var window: MyWindow;
UPDATE: With TypeScript 0.9.5 the accepted answer is working again. 업데이트: TypeScript 0.9.5를 사용하여 허용 가능한 답변이 다시 작동합니다.
#5층
동적 상태를 유지하려면 다음을 사용합니다.
(window).MyNamespace
#6층
Using TSX? TSX를 사용하시겠습니까?None of the other answers were working for me. 다른 답안은 나에게 유용하지 않다.
Here's what I did: 내가 한 일:
(window as any).MyNamespace
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.