TypeScript subtype All In One
TypeScript subtype All In One
subtype / assignment
any | unknown | object | void | undefined | null | never | |
---|---|---|---|---|---|---|---|
any → | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | |
unknown → | ✓ | ❌ | ❌ | ❌ | ❌ | ❌ | |
object → | ✓ | ✓ | ❌ | ❌ | ❌ | ❌ | |
void → | ✓ | ✓ | ❌ | ❌ | ❌ | ❌ | |
undefined → | ✓ | ✓ | ✅ | ✓ | ✅ | ❌ | |
null → | ✓ | ✓ | ✅ | ✅ | ✅ | ❌ | |
never → | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
https://www.typescriptlang.org/docs/handbook/type-compatibility.html#subtype-vs-assignment
demo
// export {};
let n: null = null;
let u: undefined = undefined;
// let test: boolean = null;
// Type 'null' is not assignable to type 'boolean'.(2322)
// let test: boolean = undefined;
// Type 'undefined' is not assignable to type 'boolean'.(2322)
// let test: object = Object;
// let test: object = Array;
// let test: object = Number;
// let test: object = String;
// let test: object = {};
// let test: object = [];
// let test: object = null;
// Type 'null' is not assignable to type 'object'.(2322)
// let test: object = undefined;
// Type 'undefined' is not assignable to type 'object'.(2322)
// let test: unknown = undefined;
// let test: unknown = null;
// let test: any = undefined;
// let test: any = null;
// let test: void = undefined;
// let test: void = null;
// Type 'null' is not assignable to type 'void'.(2322)
// let test: undefined = undefined;
// let test: undefined = null;
// Type 'null' is not assignable to type 'undefined'.(2322)
// let test: null = null;
// let test: null = undefined;
// Type 'undefined' is not assignable to type 'null'.(2322)
// let test: never = undefined;
// Type 'undefined' is not assignable to type 'never'.(2322)
// let test: never = null;
// Type 'null' is not assignable to type 'never'.(2322)
// let test: never = '';
// Type 'string' is not assignable to type 'never'.(2322)
let test: never;
console.log('test =', test);
// Variable 'test' is used before being assigned.(2454)
// let test = 'abc';
// console.log('test =', test);
// 模块声明
export {};
// export {};
let n: null = null;
let u: undefined = undefined;
let test: boolean = null;
// Type 'null' is not assignable to type 'boolean'.(2322)
let test2: boolean = undefined;
// Type 'undefined' is not assignable to type 'boolean'.(2322)
console.log('test =', test);
console.log('test2 =', test2);
// let test = 'abc';
// console.log('test =', test);
// 模块声明
export {};
refs
©xgqfrms 2012-2025
www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!
原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!
本文首发于博客园,作者:xgqfrms,原文链接:https://www.cnblogs.com/xgqfrms/p/15862361.html
未经授权禁止转载,违者必究!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
2021-02-04 日天 === 昊
2021-02-04 Apple Watch Series 6 编织表带如何清洗
2021-02-04 网易吃鸡 mac 版,没有声音
2021-02-04 Excel 如何固定表头
2021-02-04 js camelCase formatter
2021-02-04 最新 uni-app 免费教程
2021-02-04 智能广告投放平台 All in One