如何使用打字稿定义一个对象以具有不同的字段?
Posted
技术标签:
【中文标题】如何使用打字稿定义一个对象以具有不同的字段?【英文标题】:How can I define an object to have different fields using typescript? 【发布时间】:2012-10-31 02:33:30 【问题描述】:我有以下功能:
function getAdminParams(entity)
params = ;
params =
pk: "0006000",
param: "?pk=0006000",
table: "Content",
success: true
;
return params;
在另一个文件中我这样使用这个函数:
params = getAdminParams(entity);
if (params.success)
有没有一种方法可以使用智能感知,以便 params 对象 显示为具有“成功”参数?我看到 Typescript 有类和接口,但我不确定如何或是否可以将它们用作返回类型。
【问题讨论】:
我不确定 typescript,但请注意,从 javascript 的角度来看,函数params =
的第一行是不需要的。它会创建一个空对象,当您将params
分配给下一行的另一个对象时,该对象将被丢弃。此外,不在该函数内声明params
和var
意味着您正在更新全局params
。对于这样的简单情况,您根本不需要函数中的 params
变量:您可以直接使用 return ...
返回一个对象文字(确保将起始
放在与return
).
【参考方案1】:
如果将 params 定义为接口,则可以在函数括号后使用冒号将其声明为 getAdminParams()
的返回类型。像这样:
interface IParams
success: bool;
pk: string;
// etc...
function getAdminParams(entity): IParams
params =
pk: "0006000",
success: true
// etc...
;
return params; // If the properties assigned do not fulfill the IParams interface, this will be marked as an error.
params = getAdminParams(entity);
if (params. // Intellisense should offer success and pk and any other properties of IParams).
在getAdminParams
中,您可以将params
显式声明为新的IParams
,但即使您不这样做,类型推断也会为您设置智能感知,只要您分配给params
的属性即可对象履行IParams
接口中指定的契约。
当然,您的返回类型可以是类、字符串或任何其他类型,您可以使用function f(): returnType
语法以同样的方式声明。
language specification 非常详细地介绍了所有这些,或者在这里有更简短的介绍:http://www.codeproject.com/Articles/469280/An-introduction-to-Type-Script 或类似的 SO 问题:How to declare Return Types for Functions in TypeScript
【讨论】:
以上是关于如何使用打字稿定义一个对象以具有不同的字段?的主要内容,如果未能解决你的问题,请参考以下文章