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

43 lines
1.1 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
import React = require('react');
function Greet(x: {name?: string}) {
return <div>Hello, {x}</div>;
}
class BigGreeter extends React.Component<{ name?: string }, {}> {
render() {
return <div></div>;
}
greeting: string;
}
// OK
let a = <Greet />;
2015-11-10 21:59:47 +01:00
// OK - always valid to specify 'key'
2015-11-10 08:10:04 +01:00
let b = <Greet key="k" />;
2015-11-10 21:59:47 +01:00
// Error - not allowed to specify 'ref' on SFCs
2015-11-10 08:10:04 +01:00
let c = <Greet ref="myRef" />;
2015-11-10 21:59:47 +01:00
// OK - ref is valid for classes
2015-11-10 08:10:04 +01:00
let d = <BigGreeter ref={x => x.greeting.substr(10)} />;
2015-11-10 21:59:47 +01:00
// Error ('subtr' not on string)
2015-11-10 08:10:04 +01:00
let e = <BigGreeter ref={x => x.greeting.subtr(10)} />;
2015-11-10 21:59:47 +01:00
// Error (ref callback is contextually typed)
2015-11-10 08:10:04 +01:00
let f = <BigGreeter ref={x => x.notARealProperty} />;
2015-11-10 21:59:47 +01:00
// OK - key is always valid
let g = <BigGreeter key={100} />;
// OK - contextually typed intrinsic ref callback parameter
let h = <div ref={x => x.innerText} />;
// Error - property not on ontextually typed intrinsic ref callback parameter
let i = <div ref={x => x.propertyNotOnHtmlDivElement} />;