【发布时间】:2017-05-31 15:49:25
【问题描述】:
在 Typescript 2.1 中,尝试以下操作时:
// address.tsx
...
interface Address {
street: string;
country: string;
}
interface CanadianAddress extends Address {
postalCode: string;
}
interface AmericanAddress extends Address {
zipCode: string;
}
type Properties = AmericanAddress | CanadianAddress'
function isAmerican(address: Properties) address is AmericanAddress {
return 'zipCode' in address;
}
export class Address extends React.Component<Properties, void> {
public render() {
let isAmerican = isAmerican(this.props.address);
...
}
}
// map.tsx
...
let rootDiv = document.createElement('root')l
ReactDOM.render(<Address postalCode='T1B 0L3' />, rootDiv);
编译时出现如下错误:
错误 TS2600: JSX 元素属性类型 '({ children?: ReactNode; } & AmericanAddress) | ({ children?: ReactNode; } & CanadianAddress' 可能不是联合类型。
我想知道为什么不支持此功能,以及如何在不指定过于复杂的属性集的情况下完成此操作?
【问题讨论】:
标签: reactjs typescript react-jsx