【发布时间】:2021-08-24 03:32:49
【问题描述】:
请看下面的代码:
type Collections = 'Users' | 'Products' | 'Accounts';
// querying a collection
DB.collection('Users' as Collections).doc(docId).get().then(...)
// below I'm misspelling the "Users" as "User" expecting that I'll get an error. But no errors
DB.collection('User' as Collections).doc(docId).get().then(...)
如何在此处强制执行类型检查?
// one way I'm doing that is
const UsersCollectionNameKey: Collections = 'Users';
DB.collection(UsersCollectionNameKey).doc(docId).get().then(...)
这可行,但预先声明所有集合名称变量非常繁琐。我想知道我们是否有一个像is 这样的打字稿关键字,以便它在那里强制执行类型检查?喜欢
DB.collection('Users' is Collection) // no errors
DB.collection('User' is Collection) // Err: User is not assignable to type Collection
【问题讨论】:
-
as告诉编译器你更了解并且没有编译时或运行时行为来强制执行该类型。如果您有class实例,则可以使用instanceof。您还可以定义自己的type guards,在运行时工作。 -
删除了我最后的评论.. 开始明白了。你能改变
DB.collection的类型吗?你写/定义了吗?
标签: typescript