file.tsx(21,16): error TS2322: Type '{ naaame: string; }' is not assignable to type 'IntrinsicAttributes & { name: string; }'.
  Property 'naaame' does not exist on type 'IntrinsicAttributes & { name: string; }'. Did you mean 'name'?
file.tsx(29,15): error TS2322: Type 'number' is not assignable to type 'string'.
file.tsx(31,15): error TS2322: Type '{ naaaaaaame: string; }' is not assignable to type 'IntrinsicAttributes & { name?: string | undefined; }'.
  Property 'naaaaaaame' does not exist on type 'IntrinsicAttributes & { name?: string | undefined; }'.
file.tsx(36,10): error TS2741: Property '"prop-name"' is missing in type '{ "extra-prop-name": string; }' but required in type '{ "prop-name": string; }'.
file.tsx(39,23): error TS2322: Type '{ prop1: true; }' is not assignable to type 'IntrinsicAttributes'.
  Property 'prop1' does not exist on type 'IntrinsicAttributes'.
file.tsx(40,24): error TS2322: Type '{ ref: (x: any) => any; }' is not assignable to type 'IntrinsicAttributes'.
  Property 'ref' does not exist on type 'IntrinsicAttributes'.
file.tsx(40,29): error TS7006: Parameter 'x' implicitly has an 'any' type.
file.tsx(43,16): error TS1005: ',' expected.
file.tsx(47,11): error TS2559: Type '{ prop1: boolean; }' has no properties in common with type 'IntrinsicAttributes'.


==== file.tsx (9 errors) ====
    /// <reference path="/.lib/react.d.ts" />
    
    function EmptyPropSFC() {
        return <div> Default Greeting </div>;
    }
    
    function Greet(x: {name: string}) {
    	return <div>Hello, {x}</div>;
    }
    function Meet({name = 'world'}) {
    	return <div>Hello, {name}</div>;
    }
    function MeetAndGreet(k: {"prop-name": string}) {
    	return <div>Hi Hi</div>;
    }
    
    // OK
    let a = <Greet name='world' />;
    let a1 = <Greet name='world' extra-prop />;
    // Error
    let b = <Greet naaame='world' />;
                   ~~~~~~
!!! error TS2322: Type '{ naaame: string; }' is not assignable to type 'IntrinsicAttributes & { name: string; }'.
!!! error TS2322:   Property 'naaame' does not exist on type 'IntrinsicAttributes & { name: string; }'. Did you mean 'name'?
    
    // OK
    let c = <Meet />;
    let c1 = <Meet extra-prop/>;
    // OK
    let d = <Meet name='me' />;
    // Error
    let e = <Meet name={42} />;
                  ~~~~
!!! error TS2322: Type 'number' is not assignable to type 'string'.
    // Error
    let f = <Meet naaaaaaame='no' />;
                  ~~~~~~~~~~
!!! error TS2322: Type '{ naaaaaaame: string; }' is not assignable to type 'IntrinsicAttributes & { name?: string | undefined; }'.
!!! error TS2322:   Property 'naaaaaaame' does not exist on type 'IntrinsicAttributes & { name?: string | undefined; }'.
    
    // OK
    let g = <MeetAndGreet prop-name="Bob" />;
    // Error
    let h = <MeetAndGreet extra-prop-name="World" />;
             ~~~~~~~~~~~~
!!! error TS2741: Property '"prop-name"' is missing in type '{ "extra-prop-name": string; }' but required in type '{ "prop-name": string; }'.
!!! related TS2728 file.tsx:13:27: '"prop-name"' is declared here.
    
    // Error
    let i = <EmptyPropSFC prop1 />
                          ~~~~~
!!! error TS2322: Type '{ prop1: true; }' is not assignable to type 'IntrinsicAttributes'.
!!! error TS2322:   Property 'prop1' does not exist on type 'IntrinsicAttributes'.
    let i1 = <EmptyPropSFC ref={x => x.greeting.substr(10)} />
                           ~~~
!!! error TS2322: Type '{ ref: (x: any) => any; }' is not assignable to type 'IntrinsicAttributes'.
!!! error TS2322:   Property 'ref' does not exist on type 'IntrinsicAttributes'.
                                ~
!!! error TS7006: Parameter 'x' implicitly has an 'any' type.
    
    let o = {
        prop1: true;
                   ~
!!! error TS1005: ',' expected.
    }
    
    // OK as access properties are allow when spread
    let i2 = <EmptyPropSFC {...o} />
              ~~~~~~~~~~~~
!!! error TS2559: Type '{ prop1: boolean; }' has no properties in common with type 'IntrinsicAttributes'.
    
    let o1: any;
    // OK
    let j = <EmptyPropSFC {...o1} />
    let j1 = <EmptyPropSFC />
    let j2 = <EmptyPropSFC data-prop />
    let j3 = <EmptyPropSFC {...{}} />
    let j4 = <EmptyPropSFC {...{ "data-info": "hi"}} />
    
    