xgqfrms™, xgqfrms® : xgqfrms's offical website of cnblogs! xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

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, 禁止转载 🈲️,侵权必究⚠️!


posted @   xgqfrms  阅读(100)  评论(3编辑  收藏  举报
相关博文:
阅读排行:
· 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 时间格式转换
点击右上角即可分享
微信分享提示