declare namespace JSX {
interface IntrinsicElements {
foo: { requiredProp: string; optionalProp?: number }
}
}
‹foo requiredProp="bar" /›; // ok
‹foo requiredProp="bar" optionalProp={0} /›; // ok
‹foo /›; // error, requiredProp is missing
‹foo requiredProp={0} /›; // error, requiredProp should be a string
‹foo requiredProp="bar" unknownProp /›; // error, unknownProp does not exist
// ok, because 'some-unknown-prop' is not a valid identifier
‹foo requiredProp="bar" some-unknown-prop /›;