输入'CanvasRenderingContext2D | WebGLRenderingContext'不能分配给'CanvasRenderingContext2D'类型

时间:2015-08-20 10:05:41

标签: typescript visual-studio-2015 typescript1.5

我已使用Typescript 1.5 Beta升级到Visual Studio 2015社区。我收到以下错误。

  

输入'CanvasRenderingContext2D | WebGLRenderingContext'不是   可分配给'CanvasRenderingContext2D'

类型

这发生在以下一行

var canvas: HTMLCanvasElement = $(element).find('canvas').get(0);
var ctx: CanvasRenderingContext2D = canvas.getContext("2d");

我已将TypeScript工具版本设置为1.4和1.5并获得相同的错误。

1 个答案:

答案 0 :(得分:12)

从错误消息中,getContext的返回类型似乎是联合类型,这意味着它是CanvasRenderingContext2DWebGLRenderingContext之一。

编译器无法分辨哪个,所以你需要帮助它:

var ctx = <CanvasRenderingContext2D> canvas.getContext("2d");

但是,如果我尝试使用最新版本的所有内容,这可以正常工作:

var canvas = <HTMLCanvasElement> $('#example').find('canvas').get(0);
var ctx: CanvasRenderingContext2D = canvas.getContext("2d");

所以看起来事情并不是很正确。

getContext的当前定义具有值&#34; 2d&#34;的专用签名。应该给你一个CanvasRenderingContext2D。以下是三个签名......

  1. &#34; 2D&#34; :CanvasRenderingContext2D
  2. &#34;实验-webgl的&#34; :WebGLRenderingContext
  3. 其他stringCanvasRenderingContext2D | WebGLRenderingContext
  4. 如果它没有识别传入的字符串,它应该只返回联合类型。

    如果您在(后键入getContext时自动完成并未建议这三个重载,则可能表示存在问题。

    Auto-Completion for getContext with 2d argument