打字稿接口变量空检查并设置默认值
Posted
技术标签:
【中文标题】打字稿接口变量空检查并设置默认值【英文标题】:typescript interface variable null check and set default value 【发布时间】:2021-02-17 21:56:18 【问题描述】:如何在接口变量上检查 null 以及如何在 typescript 中设置默认值?
const userModel = snap.data() as UserModel //firestore
export interface UserModel
docId: string,
accountId: number // if null then I want to set 0
有时,用户没有帐户 ID。那么如何检查呢?
if (userModel.userPushToken !== undefined)
- 目前我正在这样检查
【问题讨论】:
【参考方案1】:接口中的初始化程序
在 Typescript 中,接口只是对对象外观的描述,不能包含任何功能。因此,您不必像使用类那样构建接口。因此,您无法在界面中进行任何初始化。 如果您将 typescript 接口编译为 javascript,typescript 编译器只会删除它,因为它除了使内容更具可读性并提供类型检查之外没有其他功能。 如果您想初始化一个变量,我建议您将接口更改为一个类:
export class MyUserModel implements UserModel
public docId: string;
public accountId: number
constructor(usrmodel:UserModel)
this.docId = usrmodel.docId || ""; // Initialize with "" if docId is null or undefined
this.accountId = usrmodel.accountId || 0; // Initialize with 0 if accountid is null or undefined
或者为接口写一个“复制构造器”:
function InitUserModel(usrModel:UserModel):UserModel
usrModel.accountId = usrModel.accountId || 0;
return usrModel;
检查是否为空或未定义
有很多关于这个的好帖子。例如Is there a way to check for both `null` and `undefined`?
【讨论】:
【参考方案2】:Typescript 只是类型。
所以,你不能设置默认值。
但是,你可以设置默认类型。
export interface UserModel<T>
docId: string,
accountId: T extends number ? number : 0 // if null then I want to set 0
const snap: any =
const userModel = snap.data() as UserModel<void> //firestore
userModel.accountId = 0 // if assign not 0, error occured.
您可以在函数中设置默认值。
但是,它是 javascript 而不是打字稿。
type Params =
a: number,
b: string
const foo = ( a=1, b='something': Params ) =>
console.log(params);
【讨论】:
如何处理null? 您可以在javascript中设置默认值!打字稿不在运行时执行。以上是关于打字稿接口变量空检查并设置默认值的主要内容,如果未能解决你的问题,请参考以下文章