TypeScript type assertion All In One
TypeScript type assertion All In One
// let test: any = '';
// test.name;
// test();
// test.length;
// let test: unknown = '';
// test.name;
// Object is of type 'unknown'.(2571)
// test();
// Object is of type 'unknown'.(2571)
// test.length;
// Object is of type 'unknown'.(2571)
console.log('test =', test);
type assertion
// type assertion
let test: unknown = '';
// (test as object).name;
// Property 'name' does not exist on type 'object'.ts(2339)
// (test as Object).name;
// Property 'name' does not exist on type 'Object'.(2339)
(test as any).name;
// (test as Function)();
// (test as Array<number>).length;
// (test as string).length;
console.log('test =', test);
https://www.typescriptlang.org/play
function nameChecker(obj: object): obj is { name: string } {
return !!obj && typeof obj === "object" && "name" in obj;
}
/*
function nameChecker(obj: object): obj is { name: string } {
return !!obj && typeof obj === "object" && name in obj;
}
const name: void
@deprecated
'name' is deprecated.ts(6385)
lib.dom.d.ts(17177, 5): The declaration was marked as deprecated here.
The left-hand side of an 'in' expression must be a private identifier or of type 'any', 'string', 'number', or 'symbol'.ts(2360)
*/
const obj = {};
if (nameChecker(obj)) {
console.log('name', obj.name);
}
refs
https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#type-assertions
https://www.typescriptlang.org/docs/handbook/basic-types.html#type-assertions
https://www.tutorialsteacher.com/typescript/type-assertion
©xgqfrms 2012-2020
www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!
原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!
本文首发于博客园,作者:xgqfrms,原文链接:https://www.cnblogs.com/xgqfrms/p/15863707.html
未经授权禁止转载,违者必究!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
2021-02-05 js 可选链 & 空值合并 In Action
2021-02-05 最新 Steam 免费游戏
2021-02-05 markdown table collapse span
2020-02-05 vue SSR & global data
2020-02-05 SameSite & Cookies
2020-02-05 CURL POST
2020-02-05 moment.js 时间格式转换