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
|
//// [file.tsx]
import React = require('react')
declare function Component<U>(l: U): JSX.Element;
function createComponent<T extends { prop: number }>(arg: T) {
let a1 = <Component {...arg} />;
let a2 = <Component {...arg} prop1 />;
}
declare function ComponentSpecific<U>(l: { prop: U }): JSX.Element;
declare function ComponentSpecific1<U>(l: { prop: U, "ignore-prop": number }): JSX.Element;
function Bar<T extends { prop: number }>(arg: T) {
let a1 = <ComponentSpecific {...arg} ignore-prop="hi" />; // U is number
let a2 = <ComponentSpecific1 {...arg} ignore-prop={10} />; // U is number
let a3 = <ComponentSpecific {...arg} prop="hello" />; // U is "hello"
let a4 = <ComponentSpecific {...arg} prop1="hello" />; // U is "hello"
}
//// [file.jsx]
define(["require", "exports", "react"], function (require, exports, React) {
"use strict";
exports.__esModule = true;
function createComponent(arg) {
var a1 = <Component {...arg}/>;
var a2 = <Component {...arg} prop1/>;
}
function Bar(arg) {
var a1 = <ComponentSpecific {...arg} ignore-prop="hi"/>; // U is number
var a2 = <ComponentSpecific1 {...arg} ignore-prop={10}/>; // U is number
var a3 = <ComponentSpecific {...arg} prop="hello"/>; // U is "hello"
var a4 = <ComponentSpecific {...arg} prop1="hello"/>; // U is "hello"
}
});
|