小编sam*_*mvv的帖子

如何在TypeScript中创建循环引用类型?

我有以下代码:

type Document = number | string | Array<Document>;
Run Code Online (Sandbox Code Playgroud)

TypeScript抱怨以下错误:

test.ts(7,6): error TS2456: Type alias 'Document' circularly references itself.
Run Code Online (Sandbox Code Playgroud)

显然不允许循环引用.但是,我仍然需要这种结构.这将是一个解决方法?

types circular-reference typescript

34
推荐指数
4
解决办法
1万
查看次数

使用 TypeScript 类型检查器查看两种类型是否可分配

我正在构建一个小脚本,该脚本使用TypeScript Compiler API扫描具有给定类型成员的所有接口,其源代码可在此处找到。我检查这些类的成员,看看它们是如何相互关联的。

我的问题是:我怎么知道一种类型何时可以分配给另一种类型?我搜索了TypeChecker一种方法,但找不到。有没有人有任何指示?这是一个应该能够分析的东西的例子:

export enum ASTKind {
  Number,
  Addition,
  Multiplication,
}

export interface AST {
  kind: ASTKind  
}

export interface BinaryExpression extends AST {
  left: AST
  right: AST
}

export interface Addition extends BinaryExpression {
  kind: ASTKind.Addition 
}

export interface Multiplication extends BinaryExpression {
  kind: ASTKind.Multiplication 
}
Run Code Online (Sandbox Code Playgroud)

本质上,我想要一个谓词,说明是否ASTKind.Multiplication可分配给ASTKind(在这种情况下为真)。

compiler-construction typescript typescript-compiler-api

7
推荐指数
1
解决办法
445
查看次数

如何使用Clang获取C/C++程序的所有全局声明的列表?

我正在尝试编写一个程序,通过使用Clang列出所有公开导出的C或C++程序的变量和函数.

我遵循了本教程的第05部分,但它不适用于当前版本的clang.上面说的,我得到了一些提示CompilerInstance可以使代码更短,但我不完全知道如何使用它.

你会如何实现这个功能?你能指点我正确的方向吗?例如:是否存在全局声明的变量的大型哈希表,或者我是否必须遍历AST?

c c++ llvm clang

6
推荐指数
1
解决办法
613
查看次数

如何在Haskell中工作的返回类型上获得"不可预测的"重载?

我有一些类型实例.让我们称它们为A,B和C.它们都是类型类X的实例.现在我想创建一个单独的函数create,在给定一些输入(比如说一个字符串)的情况下创建一个A,B或C的实例.类型系统无法知道输入什么类型的输入.这就是Haskell不喜欢的事情,我想我知道答案,但我想确定.我得到的当前错误是:

• Couldn't match expected type ‘c’ with actual type ‘GCCCommand’
  ‘c’ is a rigid type variable bound by
    the type signature for:
      compiler :: forall c. CompilerCommand c => String -> c
    at src/System/Command/Typed/CC.hs:29:1-44
• In the expression: gcc path
  In an equation for ‘compiler’:
      compiler path
        | exe == "g++" || exe == "gcc" || exe == "cc" || exe == "cpp"
        = gcc path
        where
            exe = takeFileName path
• Relevant bindings include
    compiler :: …
Run Code Online (Sandbox Code Playgroud)

polymorphism haskell overloading typeclass

6
推荐指数
1
解决办法
61
查看次数

我可以用Elixir的内置OptionParser解析长篇论据吗?

我正在使用Elixir OptionParser,但我在解析长的虚假参数时遇到了问题.

最好,我想做这样的事情:

OptionParser.parse(argv, strict: ["db-username": :string, "db-password": :string])
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.我到了Unknown option.

有人知道是否有可能以某种方式?

arguments elixir

1
推荐指数
1
解决办法
173
查看次数