我有一个使用keyof特性的简单函数: interface B {
name: string;
age: number;
}
function test(key: keyof B) {}
const c = {
age: 'age'
}
test(c.age); 上面代码的问题是typescript抛出了一个错误,即type string is not assignable to keyof B。 那么,如果keyof特性不能与对象键值一起使用,那么它还有什么意义呢?我不想添加as keyof B。
我正在向react函数组件传递一个prop,它可以是字符串或对象,下面是一个例子。它不需要打字就能工作。但是,当我添加typescript时,它似乎不理解属性(例如下面的helpMessage )既可以是字符串也可以是对象。
我得到这个错误TS2339: Property 'message' does not exist on type 'string | HelpMessage'. Property 'message' does not exist on type 'string'.
import React, { FC
我试图让TypeScript理解我的精简的结果,并为我的工厂方法的结果保留原始的类型。现在我得到了一个Element implicitly has an 'any' type because type '{ fetchSomething: (i: number) => (query: SomethingQuery) => Promise<{ [s: string]: string; }[]>; ...' has no index signature.
我的generateApiMethods函数的结果与apiFactories对象文本的结
如何定义导入json的类型?例如
{
"things": "foo"
}
interface Data {
things: String,
another?: String
}
import data from './data.json' // Should have type Data
console.log(data.things)
console.log(data.another) // Should be allowed but undefined
resolveJsonModule选项将自动为导入的JSON生成类型,但它是不
我在TypeScript中创建了一个模型,我正在使用这个模型。在运行应用程序时,模型没有加载,我无法在该模型上使用任何函数。
模型
export class DataIDElement extends HTMLElement {
get dataID(): number {
var attributes: NamedNodeMap = this.attributes;
var dataIDAttribute: Attr = attributes.getNamedItem("data-id");
if (!dataIDAt
我刚刚在const 3.4RC中读到了新的TypeScript断言特性,我看不出它与使用const声明有什么不同。
我使用中的一个示例对此进行了测试,该示例显然演示了使用as const (const断言)如何防止文字类型被拓宽(例如,从"circle"到string)。
// Example from official announcement
function getShapes() {
let result = [
{ kind: "circle", radius: 100 },
{ kind: "square", si
我正在使用来自react-query的useQuery钩子,当我试图在查询函数中访问我的键时,也就是useQuery的第二个参数,我遇到了一个关于typescript的问题,它抱怨这个语句 const postId = queryKey[1].id as any 那 Property 'id' does not exist on type 'string | { id: string | undefined; comments: boolean; }'.
Property 'id' does not exist on type 's
我在将它们添加到一些现有的项目时遇到了一些困难。例如,我在我开发的模块中有一个类:
export default class ClassName {
// Class members
}
现在,我将它导入另一个项目:
import ClassName from 'modulename';
const object = new ClassName();
我在这条线上有两个错误。
论object in const object
error Unsafe assignment of an any value @typescript-eslint/
我有一个简单的对象,有两个字段name和age,最初它们被定义为未定义的,稍后在代码中将赋值 const s={
name:undefined,
age:undefined
}
s.name="Test" //error 当我尝试为我的属性赋值时,它会出现typescript错误 Type '"Test"' is not assignable to type 'undefined'. 有人能解释为什么我在typescript中遇到这个错误以及如何修复它吗?
我有UserModel:
id: number;
email: string;
avatar: string|object;
将User.avatar存储在DB中作为字符串注册的json.Then,我有下一个函数:
function (user: IUserModel) {
if (typeof user.avatar === 'string') {
user.avatar = JSON.parse(user.avatar);
}
// so, on this moment user.avatar always is object
// do sth
当我们输入断言时,如果Typescript知道我们不可能是对的,它就会报错。例如 type Counter = (start: number) => number;
let counterProblemDetected = ((start: number) => "yo") as Counter; 但是当非空检查被启用时,它不会像我们设置了类型时那样抱怨没有从函数返回: // 'strictNullChecks' is on
// Typescript does not complain
let counterProblemNotDetected
从本质上说,我只想在稍后的项目中加载jquery,以便通过使用以下命令通过webpack导入jquery来减少包的大小 import(/*webpackChunkName: "jquery" */ "jquery").then(({default: $}) => { 然而,我收到了一个: error TS2459: Type 'JQueryStatic' has no property 'default' and no string index signature. 我相信这是因为Typescript的缘故,有没有什
我正在尝试从Typescript中的一个功能创建一个<GeoJSON {...} /> react元素,但没有成功。(我使用的是react-leaflet + Typescript)对于常规的js,我只需要这样做:
<Map
{...}
<GeoJSON
data={...} <- Here I put my feature in JSON format
style={...} <- Associated style
/>
/>
但是在Typescript中,如果我尝试做完全相同的事情,
我想在TypeScript中函数的返回语句中返回多个值。在JavaScript中执行此操作的标准方法是返回一个包含值(source)的数组,但是,由于我想要返回的值具有不同的类型,因此在编译期间我得到一个错误: function fun() {
return ['hello', 1];
}
let [a, b] = fun();
console.log(a.substring(1)); 错误: test.ts:6:15 - error TS2339: Property 'substring' does not exist on type 's
我有一个TypeScript项目,并定义了一个自定义接口
interface Person {
name: string;
}
我想为这个接口创建一个类型保护,它只在一个值依附于该接口时返回true。具体来说就是..。
对象
具有name属性
其中name的值为string类型。
我能够完成以下1和2项任务:
const isPerson = (value: unknown): value is Person => (
value instanceof Object
&& 'name' in value
)
然而,如果我试图