相关文章推荐
帅气的洋葱  ·  VSCode报错 Unexpected ...·  1 月前    · 
八块腹肌的盒饭  ·  const ...·  7 月前    · 
满身肌肉的饼干  ·  Get-Counter ...·  7 月前    · 
潇洒的斑马  ·  Type definitions and ...·  1 年前    · 
睿智的砖头  ·  造成SQL ...·  1 年前    · 
干练的瀑布  ·  Azure ...·  1 年前    · 
    let fibonacci:number[]=[1,2,"3"];//不能将类型“string”分配给类型“number”。

数组的一些方法的参数也会根据数组在定义时约定的类型进行限制:

    let fibonacci:number[]=[1,2,3];
    fibonacci.push('1') // 类型“"1"”的参数不能赋给类型“number”的参数。

上个例子中,数组被限制了数值类型,所以对应的方法也被限制住了,不允许进行添加字符串类型的值。

数组泛类型

我们也可以使用数组泛型(Array Generic)Array<elemType>来表示数组:

    let fibonacci:Array<number> = [1,1,2,3,5]
用接口表示数组

接口也可以用来描述数组:

    interface NumberArray {
        [index:number]:number;
    let fibonacci:NumberArray = [1,2,3,4]

NumberArray表示:只要索引的类型是数字时,那么值的类型必须是数字。
虽然接口也可以用来描述数组,但是我们一般不建议这么做,因为这种方式比前两两种方式复杂多了。
不过有一种情况例外,那就是它常用来表示类数组。

类数组(Array-like Object)不是数组类型,比如arguments:

function sum(){
    let args:number[]=arguments; // 类型“IArguments”缺少类型“number[]”的以下属性: pop, push, concat, join 及其他 15 项。

上面因为arguments不是数组,所以直接使用普通的数组方式来描述报错,而应该使用接口:

    function sum(){
        interface args  {
            [index:number] : number ,
        let args:args=arguments;

也可以写成:

    function sum(){
        let args:{
            [index:number]:number ,
            length:number,
            callee:Function
        } = arguments

常用的类数组都有自己的定义,如IArguments,NodeList,HTMLCollection等:

    function sum(){
        let args:IArguments = arguments;

IArgumentsTypeScript中定义好的类型:

    interface IArguments {
        [index: number]: any;
        length: number;
        callee: Function;
any在数组中的应用

一个比较常见的做法是,用any表示数组中允许出现任意类型:

    let list:any[] = [1,2,'3',{}]
                    数组的类型在 TypeScript中,数组类型有多种定义方式,比较灵活。类型+[方括号]表示    let fibonacci:number[]=[1,2,3];数组的类型中不允许出现其他类型:    let fibonacci:number[]=[1,2,"3"];//不能将类型“string”分配给类型“number”。数组的一些方法的参数也会根据数组在定义时约定的类型进行限制:    let fibonacci:number[]=[1,2,3];    fibonacci.push
				
TypeScript-React-Redux (IE8+) 本项目是一个兼容IE8的 TypeScript + React + Redux + immutablejs 的项目模板。 为了降低上手难度,我在项目中写3个DEMO: todomvc without immutabeljs (ts + react + redux) [todo] todomvc with immutablejs (ts + react+ redux + immutablejs) [todo] hackernews (ts + react + redux + immutablejs) 使用时,只需要把这些文件夹删掉就好了。 Show me the code Code在此: Demo在此: Usage 使用方法很简单,只需要把项目克隆到本地,然后安装依赖就可以跑起来了。 $ git clone https://gith
使用npm install typescript-json-schema -g 从打字稿类型生成模式: typescript-json-schema project/directory/tsconfig.json TYPE 为了产生只有某些类型的文件中tsconfig.json与指定的文件名或水珠--include选项。 这对于大型项目尤其有用。 如果您的项目没有可用的tsconfig.json则可以直接指定.ts文件(在这种情况下,我们使用一些内置的编译器预设): 从打字稿类型生成模式: typescrip
TypeScript语法错误:Argument of type ‘string‘ is not assignable to parameter of type ‘Element‘. 解决方法
TypeScript语法错误: TS2345: Argument of type ‘string’ is not assignable to parameter of type ‘Element’. 类型"string"的参数不能赋给类型"Element"的参数。 报错内容以及对应代码: 报错的原因在于,该函数可接收的参数类型和实际接收的不匹配。 所以解决的方法是,将第二个参数转换成Element类型;或者更换另一种方法,插入元素的同时,还支持stri
解构是什么 解构(destructuring assignment)是一种表达式,将数组或者对象中的数据赋给另一变量。 在开发过程中,我们经常遇到这样问题,需要将对象某个属性的值赋给其它两个变量。代码如下: var person = { name:'xxxx', age: 20, hobby:['football', 'run'] var a = person.nam...
基本数据类型 我们都知道js有6种基本数据类型:布尔、数字、字符串、null、undefined和es6新增的Symbol + 1种引用数据类型:对象(包含Object、Function、Array、Date等等)类型。 ts作为js的超集,ts也有一套数据类型和上述7中数据类型进行一一对应。这里我们先介绍5中基本类型:布尔、数字、字符串、null和undefined,Symbol暂时不会提到。 基本数据类型,它有两个值:true/false。在ts中是这样表示一个bool值的: const isD
// 1, 类型加括号表示 const arrNum: number[] = [1, 2, 3, 4] const arr: [number, string, number] = [1, '2', 3] console.log(arrNum) // [1,2,3,4] console.log(arr) // [[1, '2', 3]] arrNum.push('5') // 报错 : 类型“string”的参数不能赋给类型“nu
vue-typescript-import-dts 是一个用于为 Vue.js 项目中的 TypeScript 文件生成类型声明文件的工具。在 Vue.js 项目中使用 TypeScript 进行开发时,我们经常需要为一些第三方库或自定义组件编写类型声明文件,以提供更好的代码提示和类型检查。 使用 vue-typescript-import-dts 工具可以自动分析 TypeScript 文件中的导入语句,并根据导入的模块生成对应的类型声明文件。这样,在使用该模块时,IDE 或编辑器就能提供准确的代码补全和类型检查。 例如,假设我们的项目中使用了一个名为 axios 的第三方库进行网络请求,但是该库并没有提供类型声明文件。我们可以通过 vue-typescript-import-dts 工具,在我们的 TypeScript 文件中导入 axios,并正确配置工具,它将自动为我们生成一个 axios.d.ts 类型声明文件。 具体使用 vue-typescript-import-dts 的步骤如下: 1. 在项目中安装 vue-typescript-import-dts,可以使用 npm 或 yarn 命令来安装。 2. 在 TypeScript 文件中,使用 import 语句导入需要生成类型声明文件的模块。 3. 在项目根目录下创建一个 .vue-typescript-import-dts.json 配置文件,用来配置生成类型声明文件的规则。可以指定生成的声明文件的输出路径、文件名等。 4. 运行 vue-typescript-import-dts 命令,它会自动扫描 TypeScript 文件中的导入语句,并根据配置生成相应的类型声明文件。 这样,在我们编写代码时,IDE 或编辑器就可以准确地为我们提供代码补全和类型检查的功能。这对于提高开发效率和代码质量非常有帮助。 总之,vue-typescript-import-dts 是一个便捷的工具,可以自动为 Vue.js 项目中使用的第三方库或自定义组件生成类型声明文件,提供更好的代码提示和类型检查功能。