วิธีอธิบายคุณสมบัติที่กำหนดเองในวัตถุ window ด้วยชนิดที่นำเข้ามาใน TypeScript 3.x
ฉันจะประกาศ ("typescript": "3.x.x") ว่าภายในวัตถุ window ฉันมีตัวแปรบางตัวที่มีชนิดข้อมูลบางอย่างได้อย่างไร?
ตัวอย่างเช่น ฉันมี window.foo={ bar: 'baz' } ฉันสามารถประกาศมันได้อย่างไร? วิธีเก่าในการทำเช่นนั้นคือ:
declare global {
interface Window {
foo: { bar: string }
}
}
และมันก็สร้างข้อผิดพลาดนี้
TS2669: การเพิ่มขยายสำหรับขอบเขตทั่วโลกสามารถทำได้เฉพาะเมื่อวางซ้อนโดยตรงในโมดูลภายนอกหรือประกาศโมดูลสภาพแวดล้อมเท่านั้น
ดูเหมือนว่าแค่เพิ่มระเบียนในไฟล์ d.ts บางไฟล์ก็โอเค แบบนี้:
interface Window {
foo: { bar: string }
}
แต่ตามที่ฉันเข้าใจ ในกรณีเช่นนี้ฉันไม่สามารถนำเข้าประเภทบางอย่างในไฟล์นั้นและใช้งานในคำประกาศได้ แทนที่จะใช้ string ตัวอย่างเช่น
แล้วถ้าฉันอยากทำอะไรแบบนั้นล่ะ:
import { MyTypeFromSomewhere } from './somewhere'
interface Window {
foo: { bar: MyTypeFromSomewhere }
}
ฉันจะขยายอินเทอร์เฟซ Window ด้วยคุณสมบัติใหม่และกำหนดประเภทให้กับมันได้อย่างไร?