在保留原始类型的同时限制类型?
Constrain type while still preserving original type?
import { CSSProperties } from 'react';
type StyleRulesType = Partial<CSSProperties>
type StylesDefinition = { [key: string]: StyleRulesType };
const styles: StylesDefinition = {
list: {
position: 'relative',
},
listCount: {
fontStyle: 'italic'
}
}
type StyleKeys = keyof typeof styles;
我正在尝试将样式限制为仅包含 CSSProperties 标签和值的子项,这是通过 StylesDefinition 限制来实现的。
我正在尝试让 Keys 成为 'list' | 'listitem',这适用于样式不受 StylesDefinition 约束的情况。
我想约束以帮助填充样式变量和值,同时我希望能够在引用样式对象时进行类型检查,以便我只能使用 styles.list 和 styles.list计数
很高兴介绍更多类型和方法来实现我的目标。
您不能既限制变量的类型又推断其类型。通常的做法是使用一个函数,它可以有一个类型参数,既是约束又是推断:
import { CSSProperties } from 'react';
type StyleRulesType = Partial<CSSProperties>
type StylesDefinition = { [key: string]: StyleRulesType };
function createStyleDefinition<T extends StylesDefinition>(o: T) {
return o;
}
const styles = createStyleDefinition({
list: {
position: 'relative',
},
listCount: {
fontStyle: 'italic'
}
})
type StyleKeys = keyof typeof styles;
import { CSSProperties } from 'react';
type StyleRulesType = Partial<CSSProperties>
type StylesDefinition = { [key: string]: StyleRulesType };
const styles: StylesDefinition = {
list: {
position: 'relative',
},
listCount: {
fontStyle: 'italic'
}
}
type StyleKeys = keyof typeof styles;
我正在尝试将样式限制为仅包含 CSSProperties 标签和值的子项,这是通过 StylesDefinition 限制来实现的。
我正在尝试让 Keys 成为 'list' | 'listitem',这适用于样式不受 StylesDefinition 约束的情况。
我想约束以帮助填充样式变量和值,同时我希望能够在引用样式对象时进行类型检查,以便我只能使用 styles.list 和 styles.list计数
很高兴介绍更多类型和方法来实现我的目标。
您不能既限制变量的类型又推断其类型。通常的做法是使用一个函数,它可以有一个类型参数,既是约束又是推断:
import { CSSProperties } from 'react';
type StyleRulesType = Partial<CSSProperties>
type StylesDefinition = { [key: string]: StyleRulesType };
function createStyleDefinition<T extends StylesDefinition>(o: T) {
return o;
}
const styles = createStyleDefinition({
list: {
position: 'relative',
},
listCount: {
fontStyle: 'italic'
}
})
type StyleKeys = keyof typeof styles;