chst365's blog chst365's blog
首页
  • Git
  • 网络
  • 操作系统
  • 浏览器
  • webpack
  • JavaScript
  • TypeScript
  • 性能
  • 工程化
  • React
  • 编程题
  • React技术揭秘
  • 算法
  • Node
  • 编码解码
  • NodeJS系列
  • Linux系列
  • JavaScript系列
  • HTTP系列
  • GIT系列
  • ES6系列
  • 设计模式系列
  • CSS系列
  • 小程序系列
  • 数据结构与算法系列
  • React系列
  • Vue3系列
  • Vue系列
  • TypeScript系列
  • Webpack系列
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

chst365

DIV工程师
首页
  • Git
  • 网络
  • 操作系统
  • 浏览器
  • webpack
  • JavaScript
  • TypeScript
  • 性能
  • 工程化
  • React
  • 编程题
  • React技术揭秘
  • 算法
  • Node
  • 编码解码
  • NodeJS系列
  • Linux系列
  • JavaScript系列
  • HTTP系列
  • GIT系列
  • ES6系列
  • 设计模式系列
  • CSS系列
  • 小程序系列
  • 数据结构与算法系列
  • React系列
  • Vue3系列
  • Vue系列
  • TypeScript系列
  • Webpack系列
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 浏览器

  • webpack

  • TypeScript

    • 一、类型基础
      • 强类型与弱类型
        • 静态类型语言与动态类型语言
      • 其他定义
      • 总结
    • 二、数据类型
    • 三、接口
    • 四、类
    • 五、类与接口的关系
    • 六、泛型
    • 七、类型检查机制
    • 八、高级类型
    • 九、ES6与CommonJS的模块系统
    • 十、使用命名空间
    • 十一、声明合并
    • 十二、如何编写声明文件?
    • 十三、tsconfig配置
    • 十四、编译工具:从ts-loader到Bable
    • 十五、代码检查工具:从TSLint到ESLint
    • 十六、单元测试
    • 十七、TS在react中的使用
    • 什么是TypeScript?
  • 性能

  • 工程化

  • React

  • JavaScript

  • 编程题

  • React技术揭秘

  • 算法

  • 前端
  • TypeScript
chst365
2020-03-14
目录

一、类型基础

# 一、类型基础

# 强类型与弱类型

# 静态类型语言与动态类型语言

静态类型语言:在编译阶段确定所有变量的类型 动态类型语言:在执行阶段确定所有变量的类型

# JS与C++对比

JS

class C {
    constructor(x, y) {
        this.x = x;
        this.y = y;
    }
}
function add(a, b) {
    return a.x + a.y + b.x + b.y;
}
1
2
3
4
5
6
7
8
9

C++

class C {
    public:
        int x;
        int y;
}
int add(C a, C b) {
    return a.x + a.y + b.x + b.y;
}
1
2
3
4
5
6
7
8

-w818 JS

  • 在程序运行时,动态计算属性偏移量
  • 需要额外的空间存储属性名
  • 所有对象的便宜了信息各存一份

C++

  • 编译阶段确定属性偏移量
  • 用偏移量访问代替属性访问
  • 偏移量信息共享
静态类型语言 动态类型语言
对类型极度严格 对类型非常宽松
立即发现错误 Bug可能隐藏数月甚至数年
运行时性能好 运行时性能差
自文档化 可读性差

动态类型语言的支持者认为:

  • 性能是可以改善的(V8引擎),而语言的灵活性更重要
  • 隐藏的错误可以通过单元测试发现
  • 文档可以通过工具生成

JS是动态弱类型语言

# 其他定义

美国加州大学的讲义中定义 强类型语言:不允许程序在发生错误后继续执行 这样定义,C/C++就是弱类型语言,因为他们没有对数组越界进行检查,由此可能导致程序的崩溃

争议:C/C++是强类型还是弱类型?

# 总结

-w716

#语言#TypeScript
上次更新: 2021/04/22, 00:08:06
五、进阶篇:webpack 构建速度和体积优化策略
二、数据类型

← 五、进阶篇:webpack 构建速度和体积优化策略 二、数据类型→

最近更新
01
面试官
03-27
02
this&指针&作用域&闭包
03-27
03
前端
03-27
更多文章>
Theme by Vdoing | Copyright © 2019-2025 chst365 | 豫ICP备17031889号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式