diff --git a/tsc/internal/bundled/libs/lib.dom.d.ts b/tsc/internal/bundled/libs/lib.dom.d.ts index 9e127c3f5a524..7149a4fab7142 100644 --- a/tsc/internal/bundled/libs/lib.dom.d.ts +++ b/tsc/internal/bundled/libs/lib.dom.d.ts @@ -18597,7 +18597,7 @@ interface HTMLImageElement extends HTMLElement { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLImageElement/crossOrigin) */ - crossOrigin: string | null; + crossOrigin: "anonymous" | "use-credentials" | "" | null; /** * The **`currentSrc`** read-only property of the HTMLImageElement interface indicates the URL of the image selected by the browser to load. * diff --git a/tsc/testdata/baselines/reference/compiler/htmlImageElementCrossOrigin.errors.txt b/tsc/testdata/baselines/reference/compiler/htmlImageElementCrossOrigin.errors.txt new file mode 100644 index 0000000000000..38a9ed659e95c --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/htmlImageElementCrossOrigin.errors.txt @@ -0,0 +1,16 @@ +htmlImageElementCrossOrigin.ts(7,1): error TS2322: Type '"abc"' is not assignable to type '"" | "anonymous" | "use-credentials" | null'. + + +==== htmlImageElementCrossOrigin.ts (1 errors) ==== + const img = new Image(10, 10); + + img.crossOrigin = "anonymous"; + img.crossOrigin = "use-credentials"; + img.crossOrigin = ""; + img.crossOrigin = null; + img.crossOrigin = "abc"; + ~~~~~~~~~~~~~~~ +!!! error TS2322: Type '"abc"' is not assignable to type '"" | "anonymous" | "use-credentials" | null'. + + const value: "anonymous" | "use-credentials" | "" | null = img.crossOrigin; + \ No newline at end of file diff --git a/tsc/testdata/baselines/reference/compiler/htmlImageElementCrossOrigin.js b/tsc/testdata/baselines/reference/compiler/htmlImageElementCrossOrigin.js new file mode 100644 index 0000000000000..7ea9b18ee6e02 --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/htmlImageElementCrossOrigin.js @@ -0,0 +1,23 @@ +//// [tests/cases/compiler/htmlImageElementCrossOrigin.ts] //// + +//// [htmlImageElementCrossOrigin.ts] +const img = new Image(10, 10); + +img.crossOrigin = "anonymous"; +img.crossOrigin = "use-credentials"; +img.crossOrigin = ""; +img.crossOrigin = null; +img.crossOrigin = "abc"; + +const value: "anonymous" | "use-credentials" | "" | null = img.crossOrigin; + + +//// [htmlImageElementCrossOrigin.js] +"use strict"; +const img = new Image(10, 10); +img.crossOrigin = "anonymous"; +img.crossOrigin = "use-credentials"; +img.crossOrigin = ""; +img.crossOrigin = null; +img.crossOrigin = "abc"; +const value = img.crossOrigin; diff --git a/tsc/testdata/baselines/reference/compiler/htmlImageElementCrossOrigin.symbols b/tsc/testdata/baselines/reference/compiler/htmlImageElementCrossOrigin.symbols new file mode 100644 index 0000000000000..066e69a5de7b8 --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/htmlImageElementCrossOrigin.symbols @@ -0,0 +1,38 @@ +//// [tests/cases/compiler/htmlImageElementCrossOrigin.ts] //// + +=== htmlImageElementCrossOrigin.ts === +const img = new Image(10, 10); +>img : Symbol(img, Decl(htmlImageElementCrossOrigin.ts, 0, 5)) +>Image : Symbol(Image, Decl(lib.dom.d.ts, --, --)) + +img.crossOrigin = "anonymous"; +>img.crossOrigin : Symbol(HTMLImageElement.crossOrigin, Decl(lib.dom.d.ts, --, --)) +>img : Symbol(img, Decl(htmlImageElementCrossOrigin.ts, 0, 5)) +>crossOrigin : Symbol(HTMLImageElement.crossOrigin, Decl(lib.dom.d.ts, --, --)) + +img.crossOrigin = "use-credentials"; +>img.crossOrigin : Symbol(HTMLImageElement.crossOrigin, Decl(lib.dom.d.ts, --, --)) +>img : Symbol(img, Decl(htmlImageElementCrossOrigin.ts, 0, 5)) +>crossOrigin : Symbol(HTMLImageElement.crossOrigin, Decl(lib.dom.d.ts, --, --)) + +img.crossOrigin = ""; +>img.crossOrigin : Symbol(HTMLImageElement.crossOrigin, Decl(lib.dom.d.ts, --, --)) +>img : Symbol(img, Decl(htmlImageElementCrossOrigin.ts, 0, 5)) +>crossOrigin : Symbol(HTMLImageElement.crossOrigin, Decl(lib.dom.d.ts, --, --)) + +img.crossOrigin = null; +>img.crossOrigin : Symbol(HTMLImageElement.crossOrigin, Decl(lib.dom.d.ts, --, --)) +>img : Symbol(img, Decl(htmlImageElementCrossOrigin.ts, 0, 5)) +>crossOrigin : Symbol(HTMLImageElement.crossOrigin, Decl(lib.dom.d.ts, --, --)) + +img.crossOrigin = "abc"; +>img.crossOrigin : Symbol(HTMLImageElement.crossOrigin, Decl(lib.dom.d.ts, --, --)) +>img : Symbol(img, Decl(htmlImageElementCrossOrigin.ts, 0, 5)) +>crossOrigin : Symbol(HTMLImageElement.crossOrigin, Decl(lib.dom.d.ts, --, --)) + +const value: "anonymous" | "use-credentials" | "" | null = img.crossOrigin; +>value : Symbol(value, Decl(htmlImageElementCrossOrigin.ts, 8, 5)) +>img.crossOrigin : Symbol(HTMLImageElement.crossOrigin, Decl(lib.dom.d.ts, --, --)) +>img : Symbol(img, Decl(htmlImageElementCrossOrigin.ts, 0, 5)) +>crossOrigin : Symbol(HTMLImageElement.crossOrigin, Decl(lib.dom.d.ts, --, --)) + diff --git a/tsc/testdata/baselines/reference/compiler/htmlImageElementCrossOrigin.types b/tsc/testdata/baselines/reference/compiler/htmlImageElementCrossOrigin.types new file mode 100644 index 0000000000000..00f24079c771f --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/htmlImageElementCrossOrigin.types @@ -0,0 +1,50 @@ +//// [tests/cases/compiler/htmlImageElementCrossOrigin.ts] //// + +=== htmlImageElementCrossOrigin.ts === +const img = new Image(10, 10); +>img : HTMLImageElement +>new Image(10, 10) : HTMLImageElement +>Image : new (width?: number, height?: number) => HTMLImageElement +>10 : 10 +>10 : 10 + +img.crossOrigin = "anonymous"; +>img.crossOrigin = "anonymous" : "anonymous" +>img.crossOrigin : "" | "anonymous" | "use-credentials" | null +>img : HTMLImageElement +>crossOrigin : "" | "anonymous" | "use-credentials" | null +>"anonymous" : "anonymous" + +img.crossOrigin = "use-credentials"; +>img.crossOrigin = "use-credentials" : "use-credentials" +>img.crossOrigin : "" | "anonymous" | "use-credentials" | null +>img : HTMLImageElement +>crossOrigin : "" | "anonymous" | "use-credentials" | null +>"use-credentials" : "use-credentials" + +img.crossOrigin = ""; +>img.crossOrigin = "" : "" +>img.crossOrigin : "" | "anonymous" | "use-credentials" | null +>img : HTMLImageElement +>crossOrigin : "" | "anonymous" | "use-credentials" | null +>"" : "" + +img.crossOrigin = null; +>img.crossOrigin = null : null +>img.crossOrigin : "" | "anonymous" | "use-credentials" | null +>img : HTMLImageElement +>crossOrigin : "" | "anonymous" | "use-credentials" | null + +img.crossOrigin = "abc"; +>img.crossOrigin = "abc" : "abc" +>img.crossOrigin : "" | "anonymous" | "use-credentials" | null +>img : HTMLImageElement +>crossOrigin : "" | "anonymous" | "use-credentials" | null +>"abc" : "abc" + +const value: "anonymous" | "use-credentials" | "" | null = img.crossOrigin; +>value : "" | "anonymous" | "use-credentials" | null +>img.crossOrigin : "" | "anonymous" | "use-credentials" | null +>img : HTMLImageElement +>crossOrigin : "" | "anonymous" | "use-credentials" | null + diff --git a/tsc/testdata/tests/cases/compiler/htmlImageElementCrossOrigin.ts b/tsc/testdata/tests/cases/compiler/htmlImageElementCrossOrigin.ts new file mode 100644 index 0000000000000..facb1343f2e2a --- /dev/null +++ b/tsc/testdata/tests/cases/compiler/htmlImageElementCrossOrigin.ts @@ -0,0 +1,12 @@ +// @lib: es5,dom +// @strict: true + +const img = new Image(10, 10); + +img.crossOrigin = "anonymous"; +img.crossOrigin = "use-credentials"; +img.crossOrigin = ""; +img.crossOrigin = null; +img.crossOrigin = "abc"; + +const value: "anonymous" | "use-credentials" | "" | null = img.crossOrigin;