if(someconditional) {
const SignedIn = TabNavigator(
{
'Jobs': {
screen: StackNavigator({
JobListScreen: { screen: JobList },
JobItemScreen: { screen: JobItem },
JobDetailsScreen: { screen: JobDetails },
EditJobScreen: { screen: EditJob },
BusinessProfileScreen: { screen: BusinessProfile },
UserProfileScreen: { screen: UserProfile }
})
},
'Search': {
screen: SearchBar
},
'New Job': {
screen: StackNavigator({
NewJobScreen: { screen: NewJob },
})
},
'Profile': {
screen: StackNavigator({
Profile: {screen: Profile},
EditProfileScreen: { screen: EditProfile}
})
}
}
)
} else {
const SignedIn = TabNavigator(
{
'Jobs': {
screen: StackNavigator({
JobListScreen: { screen: JobList },
JobItemScreen: { screen: JobItem },
JobDetailsScreen: { screen: JobDetails },
EditJobScreen: { screen: EditJob },
BusinessProfileScreen: { screen: BusinessProfile },
UserProfileScreen: { screen: UserProfile }
})
},
'Search': {
screen: SearchBar
},
'Profile': {
screen: StackNavigator({
Profile: {screen: Profile},
EditProfileScreen: { screen: EditProfile}
})
}
}
)
}
https://github.com/vuejs/vue-class-component/blob/master/example/App.vue
答案 0 :(得分:16)
在某些情况下,TypeScript认为某些属性,变量将为null
或undefined
。但是,如果您确定此变量不能为null,则可以使用此运算符。
考虑示例:
let a = document.getElementById('hello');
if (a) {
a.style.width = '100px';
}
TypeScript假定变量a
可以为null,因为不能保证该元素存在。因此,在访问该变量之前,您已经设置了if
防护。但是,如果您知道您的应用程序将始终具有id为#hello
的HTML元素,则可以将上述代码重写为:
const a = document.getElementById('hello');
a!.style.width = '100px';
上面的代码更易读,更简洁。在https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-0.html
处了解更多信息。答案 1 :(得分:1)
这是一个“明确分配断言”:varname !: sometype
通知打字稿不要担心检查varname
是否可能未分配(它告诉打字稿肯定会分配varname
,即使打字稿无法推断其分配位置)。通常,打字稿会检查变量是否未分配,并给出错误信息。