TypeScript/tests/cases/conformance/jsx/tsxStatelessFunctionComponents1.tsx

61 lines
1.3 KiB
TypeScript
Raw Normal View History

2015-11-10 08:10:04 +01:00
// @filename: file.tsx
// @jsx: preserve
// @noLib: true
// @skipLibCheck: true
2015-11-10 08:10:04 +01:00
// @libFiles: react.d.ts,lib.d.ts
2015-11-03 22:05:11 +01:00
function EmptyPropSFC() {
return <div> Default Greeting </div>;
}
2015-11-03 22:05:11 +01:00
function Greet(x: {name: string}) {
return <div>Hello, {x}</div>;
}
function Meet({name = 'world'}) {
2015-11-10 08:10:04 +01:00
return <div>Hello, {name}</div>;
2015-11-03 22:05:11 +01:00
}
2016-11-08 18:19:04 +01:00
function MeetAndGreet(k: {"prop-name": string}) {
return <div>Hi Hi</div>;
}
2015-11-03 22:05:11 +01:00
// OK
2015-11-10 08:10:04 +01:00
let a = <Greet name='world' />;
2016-11-08 18:19:04 +01:00
let a1 = <Greet name='world' extra-prop />;
2015-11-10 08:10:04 +01:00
// Error
let b = <Greet naaame='world' />;
// OK
let c = <Meet />;
2016-11-08 18:19:04 +01:00
let c1 = <Meet extra-prop/>;
2015-11-10 08:10:04 +01:00
// OK
let d = <Meet name='me' />;
// Error
let e = <Meet name={42} />;
2015-11-03 22:05:11 +01:00
// Error
2015-11-10 08:10:04 +01:00
let f = <Meet naaaaaaame='no' />;
2016-11-08 18:19:04 +01:00
// OK
let g = <MeetAndGreet prop-name="Bob" />;
// Error
let h = <MeetAndGreet extra-prop-name="World" />;
// Error
let i = <EmptyPropSFC prop1 />
let i1 = <EmptyPropSFC ref={x => x.greeting.substr(10)} />
let o = {
prop1: true;
}
2017-05-05 02:12:52 +02:00
// OK as access properties are allow when spread
let i2 = <EmptyPropSFC {...o} />
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"}} />