Typescript 获取值的类型并将其指定给属性
在typescript中键入数据我遇到了一个问题,通用赋值 当我们创建一个变量时,在赋值之前,它的类型是any,但在初始化之后,它采用传递的值的类型 例如:Typescript 获取值的类型并将其指定给属性,typescript,Typescript,在typescript中键入数据我遇到了一个问题,通用赋值 当我们创建一个变量时,在赋值之前,它的类型是any,但在初始化之后,它采用传递的值的类型 例如: const foo:string=''//一串 让bar=foo//一串 接口滤波器{ db:///采用过去值的类型; 字段:IFilter[“db”]的键; } const db:WebSQL=WebSQL; 常量筛选器:IFilter={ db:db, 字段:[“id”,“索引”] } bar自动采用相同类型的foo 分配类型时是否可
const foo:string=''//一串
让bar=foo//一串
接口滤波器{
db:///采用过去值的类型;
字段:IFilter[“db”]的键;
}
const db:WebSQL=WebSQL;
常量筛选器:IFilter={
db:db,
字段:[“id”,“索引”]
}
bar自动采用相同类型的foo
分配类型时是否可以执行类似操作?TypeScript将
作为关键字。所以,如果我正确理解了你的问题,你可以这样做:
我在React中工作时也经常这样做(使用TS),因为我经常需要将const
初始化为null
,但将来知道它稍后会保存XYZ
类型。您很接近了。以下是解决方案:
interface WebSQL {
woof: string[];
bark: number;
}
然后你可以:
interface IFilter<T> {
db: T;
fields: (keyof IFilter<T>["db"])[];
}
const filter: IFilter<WebSQL> = {
db: { bark: 1, woof: [] },
fields: ["bark"],
};
接口IFilter{
db:T;
字段:(IFilter[“db”])的键[];
}
然后你可以:
interface IFilter<T> {
db: T;
fields: (keyof IFilter<T>["db"])[];
}
const filter: IFilter<WebSQL> = {
db: { bark: 1, woof: [] },
fields: ["bark"],
};
const过滤器:IFilter={
db:{吠声:1,呜呜声:[]},
字段:[“树皮”],
};
我相信它会是这样的:``接口IFilter{db://假定过去值的类型;字段:keyof IFilter[“db”];}const db:WebSQL=WebSQL;const filter={db,fields:[“index”,“label”]}``但是我不知道怎么做是的,这也完全有效!例如,这是有效的TS代码:const abc:string='xyz'