账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    ts通过可以获取对象的值报错?
    80
    0
    interface ITransformNames { [propName: string]: string; } const transformNames:ITransformNames = { webkit: '-webkit-transform', Moz: 'MozTransform', O: 'OTransform', ms: 'msTransform', standard: 'transform' } for (const key in transformNames) { if (elementStyle[transformNames[key]] !== undefined) { return key } }
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 简sheet 普通会员 1楼

      在JavaScript中,ts是一种静态类型检查器,它用于检查JavaScript代码中的类型问题,包括但不限于:

      1. 函数参数类型错误:如果函数参数的类型与预期的类型不匹配,ts可能会抛出类型错误,例如:

      ``typescript function greet(name: string): void { console.log(Hello, ${name}!`); }

      greet('World'); // TypeScript error: Argument of type 'string' is not assignable to parameter of type 'string' ```

      在这个例子中,greet函数接受一个字符串参数,并试图将其赋值给一个整数类型,这违反了类型安全原则。ts会检查函数参数的类型,并如果发现类型不匹配,它会抛出类型错误。

      1. 对象属性访问错误:如果试图访问的对象的属性名不正确,或者访问的对象不存在,ts也会抛出类型错误,例如:

      ```typescript const obj = { name: 'John', age: 30 };

      console.log(obj.name); // TypeScript error: Property 'name' is missing in object '#' (TS2339) ```

      在这个例子中,obj对象的name属性没有被正确声明或初始化,因此console.log(obj.name)会抛出类型错误,因为name属性的类型是string,而obj对象的类型是object

      1. 不能同时在函数参数和对象属性上使用箭头函数或表达式:在函数参数上使用箭头函数或表达式时,如果函数参数的类型与箭头函数或表达式返回的类型不匹配,ts可能会抛出类型错误,例如:

      ``typescript function greet(name: string): void { console.log(Hello, ${name}!`); }

      greet(name: 'World'); // TypeScript error: Property 'name' is missing in object '#' (TS2339) ```

      在这个例子中,greet函数接受一个字符串参数,并尝试将其赋值给一个箭头函数,这违反了类型安全原则。箭头函数返回的是一个函数,而name属性是一个对象属性,两者类型不匹配,因此greet(name: 'World')会抛出类型错误。

      为了避免这些类型错误,你可以使用类型检查库如TypeScript的TypeScript或TypeScript的TypeScript.jss来检测类型,或者在函数声明和使用对象属性时使用typeof运算符和instanceof运算符来检查对象的类型。例如:

      ``typescript function greet(name: string): void { if (typeof name !== 'string') { throw new TypeError('Argument of type ' + typeof name + ' is not a string'); } console.log(Hello, ${name}!`); }

      const obj = { name: 'John', age: 30 };

      greet(obj.name); // Output: Hello, John! console.log(obj instanceof String); // Output: true console.log(obj instanceof Object); // Output: true ```

      在这个例子中,greet函数检查了name参数的类型是否为string,如果不是,它会抛出TypeError,并在函数内部检查name是否确实是一个字符串。然后,它检查了obj对象是否为stringobj对象确实是一个字符串,因此greet(obj.name)greet(obj instanceof String)都会返回true,表示obj对象的类型正确。

      • el孤酒el 普通会员 2楼

        在JavaScript中,ts是一种静态类型检查器,它用于检查JavaScript代码中的类型问题,包括但不限于:

        1. 函数参数类型错误:如果函数参数的类型与预期的类型不匹配,ts可能会抛出类型错误,例如:

        ``typescript function greet(name: string): void { console.log(Hello, ${name}!`); }

        greet('World'); // TypeScript error: Argument of type 'string' is not assignable to parameter of type 'string' ```

        在这个例子中,greet函数接受一个字符串参数,并试图将其赋值给一个整数类型,这违反了类型安全原则。ts会检查函数参数的类型,并如果发现类型不匹配,它会抛出类型错误。

        1. 对象属性访问错误:如果试图访问的对象的属性名不正确,或者访问的对象不存在,ts也会抛出类型错误,例如:

        ```typescript const obj = { name: 'John', age: 30 };

        console.log(obj.name); // TypeScript error: Property 'name' is missing in object '#' (TS2339) ```

        在这个例子中,obj对象的name属性没有被正确声明或初始化,因此console.log(obj.name)会抛出类型错误,因为name属性的类型是string,而obj对象的类型是object

        1. 不能同时在函数参数和对象属性上使用箭头函数或表达式:在函数参数上使用箭头函数或表达式时,如果函数参数的类型与箭头函数或表达式返回的类型不匹配,ts可能会抛出类型错误,例如:

        ``typescript function greet(name: string): void { console.log(Hello, ${name}!`); }

        greet(name: 'World'); // TypeScript error: Property 'name' is missing in object '#' (TS2339) ```

        在这个例子中,greet函数接受一个字符串参数,并尝试将其赋值给一个箭头函数,这违反了类型安全原则。箭头函数返回的是一个函数,而name属性是一个对象属性,两者类型不匹配,因此greet(name: 'World')会抛出类型错误。

        为了避免这些类型错误,你可以使用类型检查库如TypeScript的TypeScript或TypeScript的TypeScript.jss来检测类型,或者在函数声明和使用对象属性时使用typeof运算符和instanceof运算符来检查对象的类型。例如:

        ``typescript function greet(name: string): void { if (typeof name !== 'string') { throw new TypeError('Argument of type ' + typeof name + ' is not a string'); } console.log(Hello, ${name}!`); }

        const obj = { name: 'John', age: 30 };

        greet(obj.name); // Output: Hello, John! console.log(obj instanceof String); // Output: true console.log(obj instanceof Object); // Output: true ```

        在这个例子中,greet函数检查了name参数的类型是否为string,如果不是,它会抛出TypeError,并在函数内部检查name是否确实是一个字符串。然后,它检查了obj对象是否为stringobj对象确实是一个字符串,因此greet(obj.name)greet(obj instanceof String)都会返回true,表示obj对象的类型正确。

        更多回答
        扫一扫访问手机版
        • 回到顶部
        • 回到顶部