ค้นหาเว็บไซต์

javascript - typescript เกิดข้อผิดพลาดในการเข้าถึงสมบัติของ globalThis


ฉันกำลังพยายามเข้าถึงคุณสมบัติ globalThis แต่ได้รับข้อผิดพลาด:

Element implicitly has an 'any' type because type 'typeof globalThis' has no index signature`.
// both getting...
if (!globalThis.foo) {}

// and setting...
globalThis.foo = 'bar

สิ่งเดียวที่ฉันหาทางออนไลน์เกี่ยวกับเรื่องนี้ได้ คือเกี่ยวกับการใช้ window และให้คำประกาศเพื่อสนับสนุนมัน แต่ไม่ใช่สำหรับ globalThis มีใครรู้วิธีสนับสนุนเรื่องนี้ไหม?

คำตอบ #1

ตามเอกสารของ globalThis ดูเหมือนว่า วิธีที่ "ถูกต้อง" ในการทำเช่นนี้คือการประกาศ var ระดับโลกชื่อ foo ซึ่งจะถูกเพิ่มไปยัง globalThis

ถ้าโค้ดของคุณอยู่ในสโคประดับโลก แบบนี้จะใช้งานได้:

var foo: string;

ถ้าโค้ดของคุณอยู่ในโมดูล คุณจะต้องห่อมันด้วยคำประกาศ global:

export const thisIsAModule = true; // <-- definitely in a module

declare global {
    var foo: string;
}

หลังจากนั้น คุณควรจะสามารถเข้าถึง globalThis.foo ตามที่ต้องการได้:

globalThis.foo = "bar"; // no error

ลิงก์ Playground ไปยังโค้ด

บทความที่เกี่ยวข้อง