作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果设置了第一种类型(它本身是可选的),我想要求第二种类型。有时我在代码中遇到问题,设置了一个可选属性后,还需要提供其他属性才能使 React 组件正常工作。
例子
interface ComponentProps {
title: string;
isEnlarged?: boolean;
text?: string; // <-- If isEnlarged is set, text shouldn't be optional
imageUri?: string // <--- If isEnlarged is set, imageUri shouldn't be optional
}
原因是通过类型检查强制执行一致的组件行为。所有放大的组件都应该有文本和图像。
有没有办法通过 TypeScript 辅助函数或逻辑来实现?
最佳答案
您可以使用可区分的联合:
type ComponentProps = {
title: string;
} & ({
isEnlarged: true; // asuming this must be true for otehrs to be required
text: string;
imageUri: string
} | {
isEnlarged?: false; // asuming this must be true for otehrs to be required
text?: string;
imageUri?: string
})
let a: ComponentProps = { title: "test" } //ok
let b: ComponentProps = { title: "test", isEnlarged: true } //err
let c: ComponentProps = { title: "test", isEnlarged: true, imageUri: "", text: "" } //ok
关于 typescript :如果设置了另一个可选类型,则需要设置类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62530366/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!