【问题标题】:can't 'convert' typescript definition in javascript无法在 javascript 中“转换”打字稿定义
【发布时间】:2021-08-11 07:11:38
【问题描述】:

我正在尝试将 this Apollo typescript repository 重写为 javascript。 我尝试学习打字稿,但有一件事叫做“类型转换”或“类型断言”,这让我感到困惑。

让我用代码解释一下:

//cache.tsx

import { InMemoryCache, ReactiveVar, makeVar } from "@apollo/client";
import { Todos } from "./models/Todos";
import { VisibilityFilter, VisibilityFilters } from "./models/VisibilityFilter";

export const cache...{
...
...
}


export const todosVar: ReactiveVar<Todos> = makeVar<Todos>( //how i can 'convert' this type caster value to vanilla js?
  todosInitialValue 
);

export const visibilityFilterVar = makeVar<VisibilityFilter>(  //how i can 'convert' this type caster value to vanilla js?
  VisibilityFilters.SHOW_ALL
)

此 cache.tsx 使用的其他 2 个文件是:

//todos.tsx

export interface Todo {
  text: string;
  completed: boolean;
  id: number
}

export type Todos = Todo[];

VisibilityFilter.tsx


export type VisibilityFilter = {
  id: string;
  displayName: string;
}

export const VisibilityFilters: { [filter: string]: VisibilityFilter } = {
  SHOW_ALL: {
    id: "show_all",
    displayName: "All"
  },
  SHOW_COMPLETED: {
    id: "show_completed",
    displayName: "Completed"
  },
  SHOW_ACTIVE: {
    id: "show_active",
    displayName: "Active"
  }
}

在这种情况下如何避免 typescript 类型检查,更重要的是,如何正确使用 ReactiveVar 和 makeVar 导入?

【问题讨论】:

    标签: javascript reactjs typescript apollo apollo-client


    【解决方案1】:

    只需像这样删除泛型:

    发件人:

    makeVar<Todos>(
    

    收件人:

    makeVar(
    

    改变这个:

    export const todosVar: ReactiveVar<Todos> = makeVar<Todos>( //how i can 'convert' this type caster value to vanilla js?
      todosInitialValue 
    );
    
    export const visibilityFilterVar = makeVar<VisibilityFilter>(  //how i can 'convert' this type caster value to vanilla js?
      VisibilityFilters.SHOW_ALL
    )
    

    到这里:

    export const todosVar = makeVar(todosInitialValue);
    export const visibilityFilterVar = makeVar(VisibilityFilters.SHOW_ALL);
    

    如何避免 typescript 检查 - 将扩展名从 .ts 和 .tsx 分别替换为 .js 和 .jsx。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-15
      • 2018-04-26
      • 2021-01-07
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 2019-03-23
      相关资源
      最近更新 更多