Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 获取值的类型并将其指定给属性_Typescript - Fatal编程技术网

Typescript 获取值的类型并将其指定给属性

Typescript 获取值的类型并将其指定给属性,typescript,Typescript,在typescript中键入数据我遇到了一个问题,通用赋值 当我们创建一个变量时,在赋值之前,它的类型是any,但在初始化之后,它采用传递的值的类型 例如: const foo:string=''//一串 让bar=foo//一串 接口滤波器{ db:///采用过去值的类型; 字段:IFilter[“db”]的键; } const db:WebSQL=WebSQL; 常量筛选器:IFilter={ db:db, 字段:[“id”,“索引”] } bar自动采用相同类型的foo 分配类型时是否可

在typescript中键入数据我遇到了一个问题,通用赋值

当我们创建一个变量时,在赋值之前,它的类型是any,但在初始化之后,它采用传递的值的类型

例如:

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'