Typescript return 类型接口有附加字段
Typescript return type Interface has additional fields
我想从数据库中获取数据,并且return它是在接口中定义的(即只有匹配接口的值)。我写了以下代码
// get data from databae - db.find()
async getCustomerList(): Promise<CustomerInfoInterface[]> {
const customerList = await db.find();
return customerList;
}
和
export interface CustomerInfoInterface {
firstName: string;
lastName: string;
phone: string;
address?: string;
birthDate?: Date;
data?: object;
}
当我调用我得到的函数时
[
{
"customerId": "5d63b80ce186984f50617c95",
"phone": "+9475588752",
"firstName": "Jhon",
"lastName": "Doe",
"address": "No. 1, Some Rd, Somewhere",
"birthDate": "1990-01-01",
"data": {},
"secret1": "a-efw53.0",
"secret2": "b-45300"
},
{
...
]
但我希望得到与界面完全匹配的响应。 (如果更少或过滤更多则出错)。这里有什么问题,它是如何使用接口实现的?
ps:我知道我可以通过手动映射每个值来完成上述操作,但这里的意图是使用 Interfaces
.
我正在 ubuntu (TypeScript)
上开发 Loopback 4
不可能仅使用 Interface
s。它是编译时间信息。运行时没有接口。为了实现你想要的,应该有可用于映射的物理值。例如。道具名称数组。而且您必须自己执行此操作(或使用像 lodash 这样的库)来过滤仅需要的道具。
我想从数据库中获取数据,并且return它是在接口中定义的(即只有匹配接口的值)。我写了以下代码
// get data from databae - db.find()
async getCustomerList(): Promise<CustomerInfoInterface[]> {
const customerList = await db.find();
return customerList;
}
和
export interface CustomerInfoInterface {
firstName: string;
lastName: string;
phone: string;
address?: string;
birthDate?: Date;
data?: object;
}
当我调用我得到的函数时
[
{
"customerId": "5d63b80ce186984f50617c95",
"phone": "+9475588752",
"firstName": "Jhon",
"lastName": "Doe",
"address": "No. 1, Some Rd, Somewhere",
"birthDate": "1990-01-01",
"data": {},
"secret1": "a-efw53.0",
"secret2": "b-45300"
},
{
...
]
但我希望得到与界面完全匹配的响应。 (如果更少或过滤更多则出错)。这里有什么问题,它是如何使用接口实现的?
ps:我知道我可以通过手动映射每个值来完成上述操作,但这里的意图是使用 Interfaces
.
我正在 ubuntu (TypeScript)
上开发 Loopback 4不可能仅使用 Interface
s。它是编译时间信息。运行时没有接口。为了实现你想要的,应该有可用于映射的物理值。例如。道具名称数组。而且您必须自己执行此操作(或使用像 lodash 这样的库)来过滤仅需要的道具。