[英]Typescript typecast existing variable
假设我正在使用以下类型的模块:
interface AwesomeLibrary {
name: string;
query: Object;
}
我想将query
类型转换到另一个界面:
interface Query {
startDate: string;
endDate: string;
showAll: boolean;
}
假设有一个函数回调为我提供了AwesomeLibrary
。 然后,我想将query
类型转换为Query
。 现在,这就是我所拥有的:
functionCb(response: AwesomeLibrary) {
// This works fine
let query: Query = response.query as Query;
// Now, query.startDate is available
// Do stuff to query
// At the end, I want to send response back to another function, so I do
response.query = query;
otherFunction(response);
// This does not work, but basically what I want:
response.query = response.query as Query;
// Then do stuff to response.query directly
// Here response.query.startDate is not available, instead I have to use response.query['startDate']
// Even this does not work:
let query: Query = response.query as Query;
response.query = query;
}
有什么想法吗?
您可以像这样键入强制转换:
(response.query as Query).startDate = (new Date()).toUTCString();
或者,您可以使用另一个变量:
let response2 = response as AwesomeLibrary & { query: Query };
response2.query.startDate = (new Date()).toUTCString();
您还可以使用以下类型的参数:
function functionCb(response: AwesomeLibrary & { query: Query }) {
response.query.startDate = (new Date()).toUTCString();
}
但是随后您需要在调用此函数时进行强制转换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.