Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在typescript中创建typings别名,就像我们在babelrc和xFF1F中创建依赖别名一样;_Typescript_React Native_Visual Studio Code_Typescript Typings - Fatal编程技术网

如何在typescript中创建typings别名,就像我们在babelrc和xFF1F中创建依赖别名一样;

如何在typescript中创建typings别名,就像我们在babelrc和xFF1F中创建依赖别名一样;,typescript,react-native,visual-studio-code,typescript-typings,Typescript,React Native,Visual Studio Code,Typescript Typings,TL;博士: 如何像在babelrc中创建依赖别名那样在typescript中创建键入别名? 完整问题: 假设我正在为iOS和web开发,并且只想编写一组代码。我使用的是React Native和一个界面与React Native非常相似的东西,为了解决这个问题,让我们称它为Respond Native(一个虚构的名称) 在这个项目中,我使用了一个名为的组件。Respond Native上的Picker(仍然是由组成的库)有一个属性在Respond Native中不存在,称为onswip 但除此

TL;博士:

如何像在babelrc中创建依赖别名那样在typescript中创建键入别名?

完整问题:

假设我正在为iOS和web开发,并且只想编写一组代码。我使用的是
React Native
和一个界面与
React Native
非常相似的东西,为了解决这个问题,让我们称它为
Respond Native
一个虚构的名称

在这个项目中,我使用了一个名为
的组件。
Respond Native
上的
Picker
(仍然是由组成的库)有一个属性
Respond Native
中不存在,称为
onswip

但除此之外,接口的其余部分基本相同。像这样的细微差别到处都是
Respond Native

为了使打字更容易,我有两个几乎相同的项目唯一不同的是,我在使用
Respond Native
的项目的
.babelrc
中添加了一个别名:

/.babelrc
{
...
“插件”:[
...
[“模块解析器”{
“根”:[“/”],
“别名”:{
//别名在这里
“本机响应”:“本机响应”
}
}]
]
}
但是,当我编写
时,编辑器不知道依赖项别名,也不知道prop
onswip
来自何处

抱歉这么长时间的积累


我的问题是,如何在创建类型别名(就像我在babelrc中所做的那样)时执行相同的操作,以便VS代码知道在检查类型时使用哪种类型声明?(假定
Respond Native
还声明了一个
Picker
类型/接口)

TS具有与babel相同的确切机制,即路径别名:

tsconfig.json

{
  "compilerOptions": {
    "paths": {
      // ...
    }
  }
}
但是,由于此配置仅适用于用户源代码,而不适用于任何
节点\u模块
,因此需要花费一些精力来“引导”TS了解您的意图

例如,
preact
是一个库,其API与
react
中的一个非常相似。假设您使用
react
编写代码,然后您想切换到
preact
,但不想更改代码

  • 您可以按如下结构组织文件:
  • 外接程序tsconfig.json
  • 此配置告诉TS在解析任何模块时,首先查看
    typings/
    文件夹。如果存在匹配项,请使用它,否则,请回退以查找
    节点\u模块/

    通过这个设置,再加上一个软链接,我们可以将
    react
    的类型定义重定向到
    preact
    中的一个

    ln -s $PWD/node_modules/preact/src/index.d.ts $PWD/typings/react/index.d.ts
    

    感谢你的回答!这听起来可能很愚蠢,但如果TS要先研究
    打字/
    ,我能把react和preact打字都放进去吗?顺便说一句,预演中的精彩投球!(虽然也许你不是有意推广)我想我会在我的下一个项目中使用它。是的,你可以。您还可以创建自己的自定义
    index.d.ts
    文件,有选择地公开/修改原始库的类型定义。从“react”导入{Component};接口MyComp扩展组件{…};导出{MyComp as Component}随便。关于preact库,我不想推广它。我个人觉得preact唯一的好处是束大小下降。缺点是,与以反应为中心的生态系统集成可能会很麻烦。你会在这里和那里遇到细微差别,导致难以捕捉的意外问题-/如果我要推广任何东西,请尝试下一个项目;-)哈哈,我会试试这个把戏,然后再打给你。苗条看起来确实很有前途。我一定会试试的!另外,感谢您对preact的内部观点。
    {
      "compilerOptions": {
        "baseUrl": ".",
        "paths": {
          "*": ["typings/*"]
        }
      }
    }
    
    ln -s $PWD/node_modules/preact/src/index.d.ts $PWD/typings/react/index.d.ts