1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
=== tests/cases/conformance/jsx/file.tsx ===
import React = require('react')
>React : typeof React
declare function Component<U>(l: U): JSX.Element;
>Component : <U>(l: U) => JSX.Element
>l : U
>JSX : any
function createComponent<T extends { prop: number }>(arg: T) {
>createComponent : <T extends { prop: number; }>(arg: T) => void
>prop : number
>arg : T
let a1 = <Component {...arg} />;
>a1 : JSX.Element
><Component {...arg} /> : JSX.Element
>Component : <U>(l: U) => JSX.Element
>arg : T
let a2 = <Component {...arg} prop1 />;
>a2 : JSX.Element
><Component {...arg} prop1 /> : JSX.Element
>Component : <U>(l: U) => JSX.Element
>arg : T
>prop1 : true
}
declare function ComponentSpecific<U>(l: { prop: U }): JSX.Element;
>ComponentSpecific : <U>(l: { prop: U; }) => JSX.Element
>l : { prop: U; }
>prop : U
>JSX : any
declare function ComponentSpecific1<U>(l: { prop: U, "ignore-prop": number }): JSX.Element;
>ComponentSpecific1 : <U>(l: { prop: U; "ignore-prop": number; }) => JSX.Element
>l : { prop: U; "ignore-prop": number; }
>prop : U
>"ignore-prop" : number
>JSX : any
function Bar<T extends { prop: number }>(arg: T) {
>Bar : <T extends { prop: number; }>(arg: T) => void
>prop : number
>arg : T
let a1 = <ComponentSpecific {...arg} ignore-prop="hi" />; // U is number
>a1 : JSX.Element
><ComponentSpecific {...arg} ignore-prop="hi" /> : JSX.Element
>ComponentSpecific : <U>(l: { prop: U; }) => JSX.Element
>arg : T
>ignore-prop : string
let a2 = <ComponentSpecific1 {...arg} ignore-prop={10} />; // U is number
>a2 : JSX.Element
><ComponentSpecific1 {...arg} ignore-prop={10} /> : JSX.Element
>ComponentSpecific1 : <U>(l: { prop: U; "ignore-prop": number; }) => JSX.Element
>arg : T
>ignore-prop : number
>10 : 10
let a3 = <ComponentSpecific {...arg} prop="hello" />; // U is "hello"
>a3 : JSX.Element
><ComponentSpecific {...arg} prop="hello" /> : JSX.Element
>ComponentSpecific : <U>(l: { prop: U; }) => JSX.Element
>arg : T
>prop : string
let a4 = <ComponentSpecific {...arg} prop1="hello" />; // U is "hello"
>a4 : JSX.Element
><ComponentSpecific {...arg} prop1="hello" /> : JSX.Element
>ComponentSpecific : <U>(l: { prop: U; }) => JSX.Element
>arg : T
>prop1 : string
}
|