什么是“声明全局”,这怎么可能?我在 Lodash 类型中找到了这段代码。问题是,当我尝试将它my.d.ts完全复制到文件中时,因为 global 不是命名空间、模块、函数或 var,我不允许这样做。所以问题是这个声明在 Typescript 中是如何可能的。
PS 所以也许有一些额外的编译器选项可以实现这一点?
declare global {
interface Set<T> { }
}
Run Code Online (Sandbox Code Playgroud) 问题是可以枚举用作键类型而不仅仅是"数字"或"字符串"?目前似乎唯一可能的声明是x:{[key:number]:any}其中key可以是"number"或"string"类型.有可能在这个例子中做出类似的东西:
例:
enum MyEnum
{
First,
Second
}
var layer:{[key:MyEnum]:any};
Run Code Online (Sandbox Code Playgroud) 情况如下。我正在使用 Nrwl NX Monorepo。我有 2 个库:lib-a和lib-b; 两者都是通过 NX 创建的可发布库。
现在我创建一个MyClass.ts在lib-a. workspace/tsconfig.json当然,在> NX中的路径下paths会为此创建一个别名lib-a( "@workspace/lib-a": ["libs/lib-a/src/index.ts"])。
到目前为止,一切都很好。现在我们可以通过导入它在工作区/monorepo 中的任何地方使用这个类import { MyClass } from '@workspace/lib-a';
不幸的是我们无法构建lib-b正在导入的MyClass. 当我们尝试这样做时,我们会收到以下错误。那么问题是我们如何构建lib-b?
PS:奇怪的是,NX monorepo 实际上不支持链接 2 个可发布库的常见场景。
“错误 TS6059:文件“d:/workspace/libs/lib-a/src/index.ts”不在“rootDir”下“d:\workspace\libs\lib-b\src”rootDir 预计包含所有源文件”
是否有有关模块生命周期的信息。目前 Angular 内部组件的生命周期有很好的文档记录,我们有诸如 、 等钩子ngOnInit()方法ngDoCheck()。
我们是否有类似的 Angular 模块生命周期钩子?我在哪里可以读到这方面的内容?
我注意到在Typescript中,您可以将构造函数定义为具有任何访问修饰符(私有,受保护,公共)。有人可以给出一个有效的示例,如何在Typescript中使用私有和受保护的构造函数吗?
例如,这是打字稿中的有效代码:
class A
{
private constructor()
{
console.log("hello");
}
}
Run Code Online (Sandbox Code Playgroud) 我试图更深入地了解 Typescript 中的高级类型,其中一种类型是 NonFunctionPropertyNames,它仅提取给定对象的属性。
type NonFunctionPropertyNames<T> = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T];
Run Code Online (Sandbox Code Playgroud)
我可以理解大括号内的第一部分'{ [K in keyof T]: T[K] extends Function ? never : K }',我们声明一个对象并排除扩展 Function 的属性。让我困惑的是大括号后面的部分[keyof T]。这看起来像数组的定义{...}[keyof T],但实际上它返回对象。有人可以解释一下为什么只有大括号部分不足以声明类型,以及[keyof T].
情况是你有一个常量或枚举列表,你该怎么做?
这是伪示例代码:
enum MyList
{
A,
B
}
enum MyList2
{
C
}
function test<T>(input:MyList | T):void
{
}
test<MyList2>(123) // compiler does not identify that 123 is not a supported
Run Code Online (Sandbox Code Playgroud) 基本上有一种方法可以将数组值提取为字符串类型?这是伪代码:
class A
{
public keys = ['name', 'age']
}
type ArrayKeys = P in A['keys'] // 'name' or 'age'
Run Code Online (Sandbox Code Playgroud)
如何将ArrayKeys缩小为A ['keys']的可能值。
现在这段代码没有错误,Typescript 编译器认为它是完全有效的,但它们是一样的吗?有人可以解释这 2 种类型定义之间的区别,并为它们中的每一种都提供很好的用例示例。
const b = () =>'hello'
const x: ()=>string = b
const y: {():string} = b
Run Code Online (Sandbox Code Playgroud) 生成 NX Monorepo 工作空间 ( https://nx.dev/ ) 的步骤很简单:
您将得到一个 NX 工作区,其中包含 Angular(最新版本)应用程序。但是,如果我想创建其中包含 Angular 8.0 应用程序的 NX 工作区该怎么办?创建其中包含具体 Angular 版本的 NX 工作区的正确方法是什么?
typescript ×7
monorepo ×2
nrwl ×2
nrwl-nx ×2
angular ×1
angular-workspace-configuration ×1
tsconfig ×1