我试图在TypeScript中实例化一个泛型类。
在C#,我会这样做的
class MyPacket<T> {...}
var t = typeof(...);
var genericContainer = typeof(MyPacket<>).MakeGenericType(new[]{ t });
var instance = Activator.CreateInstance(genericContainer);
我的用例是,我正在接收来自网络的消息。我还有一个EventEmitter,它期望被调用的类型是正确的。
(msg: Message): void =&g
我正在尝试找到一种方法来告诉TypeScript的编译器,值是(深呼吸)泛型类型的键,如果应用于该类型的对象,将产生特定类型的属性。我知道这句话真的很让人困惑,所以这里有一个具体的例子。
const obj: T = an object of type T;
const key: KeysMatching<T, U> = a key that matches `typeof T[key] === U`;
const attribute = obj[key];
在这里,我希望attribute是U类型,或者可以赋值给U类型。
我受到TypeScript文档中提供的的启发,尝试使用中建
我不知道为什么我有这样的行为,我的代码覆盖率,也许有人知道的要求。如您所知,到达代码覆盖时为蓝色,未到达时为红色,部分到达代码行时为黄色。
我编写了一个小的映射程序,它接收IDataReader并由于反射而变成对象。
internal IEnumerable<T> Convert<T>(System.Data.IDataReader dataReader) where T : new()
{
var columns = this.GetColumns(dataReader); // get a list of column name... not importa
我想创建一个适用于所有IComparable类型的接口。例如
public interface SortAlgorithm<T> where T : System.IComparable<T>
{
List<T> Sort(List<T> input);
}
我希望它的实现者也是通用的,具有我在接口中提供的相同规范。如下例所示
public class InsertionSort<T> : SortAlgorithm<T>
这就是我这样做的目的。我希望我的所有排序算法都适用于实现IComparable接口的所有类型
我正在使用以下代码实现一个二叉树:
class Binary<T>:Binary
where T: IComparable
{
但我也希望在树中使用类对象:
Binary Bin = null;
Bin = new Binary<Product>();
这显然不起作用,因为Product不是IComparable。我试着这样做是为了让它工作:
public class Product: IComparable<Product>
{
public int Id = 0;
public int CompareT
在TypeScript中,基本类型推断非常简单:
const bar = foo(); // bar: <type that foo returns>
考虑到泛型参数的默认值为{},由于回调函数返回的是number而不是{},因此预期下面的代码将导致类型错误是合理的
function foo<T = {}>(callback: () => T): T {
return callback();
}
let bar = foo(() => 1); // bar: number
但我们知道T是从回调返回值中推断出来的,它是:
function foo&l
我有一个名为CAR的对象,声明如下:
public class Car{
public int NumberOfWheels;
}
使用另一个类,我可以检索它的三个子类。
如下所示:
public TruckA getCarA(int param){
return new TruckA () {NumberOfWheels = param}
}
public TruckB getCarB(int param){
return new TruckB () {NumberOfWheels = param}
}
public TruckC getCarC(int param
我们有一个泛型类型,它成功地从它接收的类型中提取数据属性。它是in the playground,它是这样工作的。 type DataPropertyNames<T> = {
[K in keyof T]: T[K] extends Function ? never : K;
}[keyof T];
type FooBarBaz = {
foo: string;
bar: Function;
baz: number;
};
const f1 = () => {
type DataProps = DataPropertyNames<FooBarB
文档化的派生约束使用了一个where T :子句,我正在修改的示例代码是
public class TwoThingsIPC<T> where T : IPassClass
{ ...
}
其中IPassClass是一个接口。
来自我正在使用的第三方的代码具有以下格式
public class TwoThingsIPC<IPassClass>
{ ...
}
这两者在我的代码中都会导致相同的行为,但它们是相同的吗?如果不是的话,有什么区别呢?
我正在用Java构建一个通用的二叉树类。我以前没有过多地使用过泛型,所以我不知道我是否做得很好。下面是一些代码,后面跟着我的问题:
public class Node<T> {
T data;
Node<T> left, right;
//assume setters and getters
}
public class BinaryTree<T extends Comparable <T>> {
private Node<T> root;
//assume typi
我想为类开发定义一个必须是强类型且只允许类型的方法。
继承自使用没有参数的构造函数的类Dev。
以下是我得出的结论:
class Dev
{
public static void Interview<T>(T target) where T : Dev
{
}
}
另一种选择是:
class Dev
{
public static void Interview<T>(T target) where T : Dev, new()
{
}
}
不确定上面的任何内容是否
我已经创建了一个泛型类:
public abstract class MyClass<T>
{
public T Model
{
get;
protected set;
}
}
在我的代码中的某个地方,我想对任何MyClass类型的东西做一些事情。类似于:
private void MyMethod(object param)
{
myClassVar = param as MyClass;
param.Model....etc
}
这个是可能的吗?或者我需要让MyClass成为某个东西的子类(
我有一个现有的通用接口如下:
public interface IWorkflowValidator<T> where T : IPersistent, IStateful, new()
{
...
问题是,我希望将这个通用接口作为另一个名为WorkflowService的类的属性,或者作为WorkflowService类构造函数中的属性。当我像在编译器下面的构造器示例中那样做时,我相信我在T位上遇到了问题(尽管我可能错了)。
例如WorkflowService构造器
public WorkflowService(ControllerAccess controller
以下代码有效:
public class Converter<T,M> : CustomCreationConverter<M>
where T : new()
where M : class
然而,这正是我想要做的:
public class Converter<T,M> : CustomCreationConverter<M>
where T : new()
where M : interface
相当于这种可能性?
在我的具体情况下,一个规定T可以作为M的约束也就足够了。
为了澄清,我不需要让T实现某
有什么关系?
public class MyClass<? extends MySuperClass> {
private T data ;
private MyClass<? extends MySuperClass> parent ;
}
和
public class MyClass<T extends MySuperClass> {
private T data ;
// the below line - no compilation errors
private MyClass<? ext
我想这是一个简单的问题,但我找不到正确的答案。这个语法是什么意思?对于行尾的new(),我有点困惑:
public abstract class SomeClass<E> : Controller where E : ISomeInterface, new()
{
//code of the abstract class
}
我有一节课如下
public class EntityBase
{
// other code
public virtual void SetDataContext(IDataContext context) { throwNotImplemented("SetDefaultDataContext"); }
protected void throwNotImplemented( string mname )
{
throw new Exception( String.Format( "Method {0} is not
很抱歉问了这么明显的问题。
我有一个类型为T的“适配器”泛型类,其中T是已定义的接口。我想在该类中创建一个接受不同类型的通用适配器的方法。
public interface ICommon { }
public class TypeOne : ICommon { }
public class TypeTwo : ICommon { }
public class Adapter<T> where T : ICommon
{
void TakeAnotherType(Adapter<S> other)
{ }
}
这给了我一个编译错误Cannot reso
根据TypeScript (查找字符串文本类型部分),下面的代码应该在TypeScript上工作:
function createElement(tagName: "img"): HTMLImageElement;
function createElement(tagName: "input"): HTMLInputElement;
// ... more overloads ...
function createElement(tagName: string): Element {
// ... code goes here ...
}
当我在或V