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
未经授权禁止转载,违者必究!